Orange Blossom Beach
obbwiki
https://obb.miraheze.org/wiki/Main_Page
MediaWiki 1.40.1
first-letter
Media
Special
Talk
User
User talk
Orange Blossom Beach
Orange Blossom Beach talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Module
Module talk
Main Page
0
1
1
2022-06-17T14:31:25Z
MediaWiki default
1
Create main page
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{SITENAME}}! ==
This Main Page was created automatically and it seems it hasn't been replaced yet.
=== For the bureaucrat(s) of this wiki ===
Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting.
You can immediately start working on your wiki or whenever you want.
Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links:
* [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users)
* [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]]
* [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.)
==== I still don't understand X! ====
Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here:
* [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]]
* On [[phab:|Phabricator]]
* On [https://miraheze.org/discord Discord]
* On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat])
=== For visitors of this wiki ===
Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later!
21236ac3f8d65e5563b6da6b70815ca6bf1e6616
6
1
2022-06-17T22:15:51Z
Vorlitix
3
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{the Orange Blossom Beach Wiki}}! ==
Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can preform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and even lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches.
422c523fe83a38a9bc720f3920f7043856accd9b
7
6
2022-06-17T22:16:17Z
Vorlitix
3
/* Welcome to {{the Orange Blossom Beach Wiki}}! */
wikitext
text/x-wiki
__NOTOC__
== Welcome to the Orange Blossom Beach Wiki! ==
Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can preform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and even lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches.
500fee23777fecfcb7e6a9ed22ffd4cf0f1cc9e1
8
7
2022-06-17T22:20:10Z
Hatmanthehat
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the Orange Blossom Beach Wiki! ==
Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game.
fb528b55c12ed7fa3c74723ed85b4367a35d1185
31
8
2022-06-18T00:44:37Z
Hatmanthehat
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the Orange Blossom Beach Wiki! ==
Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game.
== So what now? ==
Check out the information to your left, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying.
e5c811886e9f5665203b6cfb1b4974cfbe607c5f
36
31
2022-06-19T20:10:32Z
Hatmanthehat
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the Orange Blossom Beach Wiki! ==
Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach:About|go here]].
== So what now? ==
Check out the information to your left, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying.
97171c84149340a27f96640d5eb42294b147a37b
41
36
2022-06-19T21:48:45Z
Hatmanthehat
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the Orange Blossom Beach Wiki! ==
Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach|go here]].
== So what now? ==
Check out the information to your left, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying.
c55713e9d7ad6d01f66ae03f5caf2fdbfb497528
File:Logo wiki.png
6
2
2
2022-06-17T21:57:27Z
Hatmanthehat
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
3
2
2022-06-17T21:58:02Z
Hatmanthehat
2
Protected "[[File:Logo wiki.png]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite))
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Favicon.ico
6
3
4
2022-06-17T22:10:26Z
Hatmanthehat
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
5
4
2022-06-17T22:10:54Z
Hatmanthehat
2
Protected "[[File:Favicon.ico]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite))
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Cramework
0
4
9
2022-06-17T22:44:50Z
Hatmanthehat
2
cramework
wikitext
text/x-wiki
Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in OBB is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so.
== Features ==
Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version.
{{stub}}
4cee573f6aede449f9cf05ded5f0179aac7cbec1
27
9
2022-06-17T23:22:38Z
Hatmanthehat
2
wikitext
text/x-wiki
{{stub}}Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in OBB is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so.
== Features ==
Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version.
324a11bebff4973695deabd90cc2d93e0f8bf352
28
27
2022-06-17T23:22:58Z
Hatmanthehat
2
wikitext
text/x-wiki
{{stub}}
Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in OBB is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so.
== Features ==
Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version.
9fa218713ab1b3a3c5da31ddf49a12aaffd77f79
50
28
2022-06-20T04:28:13Z
Hatmanthehat
2
wikitext
text/x-wiki
{{stub}}
Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in OBB is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so.
== Features ==
Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version.
62b8eef7e21027004bf5aa131d1acae99f6fd9e2
Module:Asbox
828
5
10
2022-06-17T22:59:02Z
Hatmanthehat
2
Created page with "--[[ This module was created by User:CodeHydro (Alexander Zhikun He). User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main() p.main() draw heavily from the following version of Template:Asbox of the English Wikipedia, authored primarily by User:Rich_Farmbrough https://en.wikipedia.org/w/index.php?title=Template:Asbox&oldid=619510287 p.templatepage() is derived from the following revision of Template:Asbox/templatepage, author..."
Scribunto
text/plain
--[[
This module was created by User:CodeHydro (Alexander Zhikun He).
User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main()
p.main() draw heavily from the following version of Template:Asbox of the English Wikipedia, authored primarily by User:Rich_Farmbrough
https://en.wikipedia.org/w/index.php?title=Template:Asbox&oldid=619510287
p.templatepage() is derived from the following revision of Template:Asbox/templatepage, authored primarily by User:MSGJ
https://en.wikipedia.org/w/index.php?title=Template:Asbox/templatepage&oldid=632914791
Both templates had significant contributions from numerous others listed in the revision history tab of their respective pages.
--]]
local WRAPPER_TEMPLATE, args = 'Template:Asbox'
local p, Buffer, stubCats = {
--Prevents dupli-cats... get it? Maybe not?
cats = setmetatable({}, {__newindex = function(t, i, v)
if not rawget(t, i) then
rawset(t, i, v)
table.insert(t, i)
end
end}),
--initializes variables required by both p.main and p.templatepage
init = function(self, frame, page)
args, page = args or require('Module:Arguments').getArgs(frame, {
wrappers = WRAPPER_TEMPLATE
}), page or mw.title.getCurrentTitle()
--Ensures demo parameter will never affect category() output for articles
self.demo = self.demo or page.namespace ~= 0 and args.demo
return args, page
end
}, require('Module:Buffer')
--[[
Formats category links. Stores them until called with cat.done=true
Takes multiple or single categories in the form of 'cat'
or a table of strings and/or tables containing parts. (See below)
]]
local attention, catTag, catKey = Buffer'Stub message templates needing attention', '[[Category:%s]]', '%s|%s%s'
local function category(cat)
for _, v in ipairs((tostring(cat) == cat or cat.t) and {cat} or cat) do
--[[
If v is a table:
[1] = full category name; defaults to local attention if blank
k = Category sort key. Prefix before v.t
t = page.text or args.tempsort#; appended after k (or in its place if omitted). Required if v is not a string
Basically the same as v = (v[1] or attention) .. ' | ' .. (v.k or '') .. v.t
]]
if v and v ~= true then--reject v = nil, false, or true
p.cats[catTag:format(tostring(v) == v and
v
or (v[1] and Buffer(v[1]) or attention):_in(v.k):_(v.t):_str(2, nil, nil, '|')
)] = true
end
end
return cat.done and table.concat(p.cats, p.demo and ' | ' or nil) or ''
end
--[[
Makes an ombox warning;
Takes table {ifNot = Boolean, text, {cat. sort key, cat. sort name}}
Will return an empty string instead when ifNot evaluates to true
]]
local function ombox(v)
if v.ifNot then return end
p.ombox = p.ombox or require('Module:Message box').ombox
category{v[2]}
return p.ombox{
type = 'content',
text = v[1]
}
end
--[[
Unlike original template, module now takes unlimited cats! This function also performs
most stub category error checks except for the ombox for when main |category= is omitted (See p.template())
]]
local function catStub(page, pageDoc)
stubCats = {missing = {}, v = {}}
local code
for k, _ in pairs(args) do
--Find category parameters and store the number (main cat = '')
table.insert(stubCats, string.match(k, '^category(%d*)$'))
end
table.sort(stubCats)
for k, v in ipairs(stubCats) do
--Get category names and, if called by p.templatepage, the optional sort key
local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], '[^%w%p%s]', '')--remove all hidden unicode chars
--Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category.
table.insert(stubCats.v,
page and (--p.templatepage passes page; p.main does not, i.e. articles are categorized without sort keys.
v=='' and tsort == 'no'--if true, inserts 'true' in table, which category() will reject
or tsort and {cat, k = ' ', t = tsort}
or {cat, k = ' *', t = page.text}--note space in front of sort key
)
or cat
)
--Check category existance only if on the template page (i.e. stub documentation)
if page then
if not mw.title.new('Category:' .. cat).exists then
code = code or mw.html.create'code':wikitext'|category'
table.insert(stubCats.missing, tostring(mw.clone(code):wikitext(v)))
end
--[[
Checks non-demo stub template for documentation and flags if doc is present.
All stub cats names are checked and flagged if it does not match 'Category: [] stub'.
The main stub cat is exempt from the name check if the stub template has its own doc
(presumably, this doc would have an explanation as to why the main stub cat is non-conforming).
]]
table.insert(stubCats.v, v == '' and not p.demo and pageDoc.exists and
'Stub message templates with documentation subpages'
or not cat:match' stubs$' and {k = 'S', t = page.text}
)
end
end
--Add category names after loop is completed
category(stubCats.v)
return #stubCats.missing > 0 and ombox{
--Changed, original msg:
--One or more of the stub categories defined in this template do not seem to exist!
--Please double-check the parameters {{para|category}}, {{para|category1}} and {{para|category2}}.
'The following parameter'
.. (#stubCats.missing == 1 and ' defines a stub category that does' or 's define stub categories that do')
.. ' not exist: ' .. mw.text.listToText(stubCats.missing),
{k = 'N', t = page.text}
}
end
--Shows population of categories found by catStub(). Outputs demo values if none
local function population()
local wikitext, base = {}, '* [[:Category:%s]] (population: %s)\n'
if not args.category and stubCats[1] ~= false then
table.insert(stubCats, 1, false)
end
for _, v in ipairs(stubCats) do
table.insert(wikitext, base:format(
v and args['category' .. v] or '{{{category}}}',
v and mw.site.stats.pagesInCategory(args['category' .. v], 'all') or 0
))
end
return table.concat(wikitext)
end
--Includes standard stub documention and flags stub templates with bad parameter values.
function p.templatepage(frame, page)
args, page = p:init(frame, page)
local tStubDoc = mw.title.new'Template:Stub documentation'
local pageDoc = page:subPageTitle('doc')
--Reorganization note: Original Asbox alternates between outputting categories and checking on params |category#=.
--Rather than checking multiple times and switching tasks, all stub category param operations have been rolled into catStub()
return Buffer(
ombox{--Show ombox warnings for missing args.
ifNot = args.category,
'The <code>|category</code> parameter is not set. Please add an appropriate stub category.',
{k = 'C', t = page.text}
})
:_(ombox{
ifNot = args.subject or args.article or args.qualifier,
'This stub template contains no description! At least one of the parameters <code>|subject</code>, <code>|article</code> or <code>|qualifier</code> must be defined.',
{k = 'D', t = page.text}
})
:_(catStub(page, pageDoc))--catStub() may also return an ombox if there are non-existing categories
:_(category{
done = p.demo ~= 'doc',--Outputs categories if not doc demo
'Stub message templates',
args.icon and
'Stub message templates using icon parameter'
or args.image and (
mw.title.new('Media:' .. mw.text.split(args.image, '|')[1]).exists--do nothing if exists. category() will reject true
or {k = 'B', t = page.text}
)
or 'Stub message templates without images',
args.imagealt and {k = 'I', t = page.text},
})
:_((not p.demo or p.demo == 'doc') and--Add standard stub template documentation
require('Module:Documentation').main{
content = Buffer(page.text ~= 'Stub' and--This comparison performed in {{Asbox/stubtree}} before it invokes Module:Asbox stubtree
require('Module:Asbox stubtree').subtree{args = {pagename = page.text}}
)
:_in'\n== About this template ==\nThis template is used to identify a':_(args.subject):_'stub':_(args.qualifier):_out' '--space
:_'. It uses {{[[Template:Asbox|asbox]]}}, which is a meta-template designed to ease the process of creating and maintaining stub templates.\n=== Usage ===\nTyping '
:_(mw.html.create'code'
:wikitext('{{', page.text == 'Stub' and 'stub' or page.text, '}}')
)
:_' produces the message shown at the beginning, and adds the article to the following categor'
:_(#stubCats > 1 and 'ies' or 'y')
:_':\n'
:_(population())
:_(pageDoc.exists and--transclusion of /doc if it exists
frame:expandTemplate{title = pageDoc.text}
)
:_'\n== General information ==\n'
:_(frame:expandTemplate{title = tStubDoc.text})
:_'\n\n'(),
['link box'] = Buffer'This documentation is automatically generated by [[Module:Asbox]].'
:_in'The general information is transcluded from [[Template:Stub documentation]]. '
:_(mw.html.create'span'
:cssText'font-size:smaller;font-style:normal;line-height:130%'
:node(('([%s edit] | [%s history])'):format(
tStubDoc:fullUrl('action=edit', 'relative'),
tStubDoc:fullUrl('action=history', 'relative')
))
)
:_out()
:_(page.protectionLevels.edit and page.protectionLevels.edit[1] == 'sysop' and
"This template is [[WP:PROTECT|fully protected]] and any [[WP:CAT|categories]] should be added to the template's ["
.. pageDoc:fullUrl('action=edit&preload=Template:Category_interwiki/preload', 'relative')
.. '| /doc] subpage, which is not protected.'
)' <br/>'
}
)()
end
function p.main(frame, page)
args, page = p:init(frame, page)
local output = mw.html.create'table'
:addClass'metadata plainlinks stub'
:css{background = 'transparent'}
:attr{role = 'presentation'}
:tag'tr'
:node((args.icon or args.image) and
mw.html.create'td'
:wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format(
args.image or '',
args.pix or '40x30',
args.imagealt or 'Stub icon'
))
)
:tag'td'
:tag'i'
:wikitext(
Buffer'This':_(args.subject):_(args.article or 'article'):_(args.qualifier)' ',--space
' is a [[' .. mw.site.namespaces.Project.name .. ':stub|stub]]. You can help ' .. mw.site.siteName .. ' by [',
page:fullUrl('action=edit', 'relative'),
' expanding it].'
)
:done()
:node(args.name and
require'Module:Navbar'._navbar{
args.name,
mini = 'yes',
style = 'position: absolute; right: 15px; display: none;'
}
)
:node(args.note and
mw.html.create()
:tag'br':done()
:tag'span'
:css{['font-style'] = 'normal', ['font-size'] = 'smaller'}
:wikitext(args.note)
:done()
)
:allDone()
--[[
Stub categories for templates include a sort key (Otherwise all will be indexed under the letter 'T' for 'Template:[] stubs')
Articles using the template do not need a sort key since they have unique names.
When p.demo equals 'doc', the demo stub categories will appear as those for a stub template.
Otherwise, any non-nil p.demo will emulate article space categories (plus any error cats unless set to 'art')
]]
if page.namespace == 0 then -- Main namespace
category'All stub articles'
catStub()
elseif p.demo then
if p.demo ~= 'doc' then catStub() end
--Unless p.demo is set to 'art', it will also include error categories normally only shown on
--the template but not in the article. The elseif after namespace == 0 means demo cats will never show in article space.
p.demodoc = p.demo ~= 'art' and p.templatepage(frame, page)
output = mw.html.create()
:node(output)
:tag'small':wikitext(
'Demo categories: ',
(category{done = true}:gsub('(%[%[)(Category:)([^|%]]-)(%|)', '%1%2%3|%2%3%4'):gsub('(%[%[)(Category:)', '%1:%2'))
):done()
:wikitext(p.demo == 'doc' and p.demodoc or nil)
else
--Checks for valid name; emulates original template's check using {{FULLPAGENAME:{{{name|}}}}}
local normalizedName = mw.title.new(args.name or '')
if normalizedName and normalizedName.fullText == page.fullText then
output = mw.html.create():node(output):wikitext(p.templatepage(frame, page))
elseif not page.isSubpage and page.namespace == 10 then-- Template namespace and not a subpage
category{{k = args.name and 'E' or 'W', t = page.text}}
end
end
return output:wikitext(not p.demo and category{done = true} or nil)
end
return p
7a798e851fafee9eca6669b91f9c8e888f976902
Template:Asbox
10
6
11
2022-06-17T23:00:02Z
Hatmanthehat
2
Created page with "<includeonly>{{#invoke:Asbox|main}}</includeonly><noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata. --> {{En-WP attribution notice|Template:Asbox}} </noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:Asbox|main}}</includeonly><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata. -->
{{En-WP attribution notice|Template:Asbox}}
</noinclude>
5602bfd5c96c05141a02ad2d9483021d868259bf
Template:Stub
10
7
12
2022-06-17T23:00:16Z
Hatmanthehat
2
Created page with "{{asbox | image = | pix = | subject = | article = article | qualifier = | category = Stubs | tempsort = no | lowercase = y | name = Template:Stub }}"
wikitext
text/x-wiki
{{asbox
| image =
| pix =
| subject =
| article = article
| qualifier =
| category = Stubs
| tempsort = no
| lowercase = y
| name = Template:Stub
}}
c8372a9cd3ab0d8ef30c901442b93e0675510604
Module:Buffer
828
8
13
2022-06-17T23:01:22Z
Hatmanthehat
2
Created page with "--[[============================= This Module was written by Alexander Zhikun He, also known as, User:Codehydro on the English Wikipedia All methods were developed independently and any resemblance to other string buffer libraries would be coincidental. Furthermore, many methods will not work when compiled by standard Lua libraries as they depend on behaviors unique to the MediaMiki Scribunto mod, which, for example, has a getmetatable() method that always returns nil o..."
Scribunto
text/plain
--[[=============================
This Module was written by Alexander Zhikun He, also known as, User:Codehydro on the English Wikipedia
All methods were developed independently and any resemblance to other string buffer libraries would be coincidental.
Furthermore, many methods will not work when compiled by standard Lua libraries as they depend on behaviors unique to
the MediaMiki Scribunto mod, which, for example, has a getmetatable() method that always returns nil on non-tables.
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual
Source code comments may be thin at some points because they are intended to be supplemented by the documentation page:
https://en.wikipedia.org/wiki/Module:Buffer/doc
Licensed under Creative Commons Attribution-ShareAlike 3.0 Unported License
https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License
https://en.wikipedia.org/wiki/Module:Buffer
https://en.wikipedia.org/wiki/User:Codehydro
=============================--]]
local function Valid(v)--type validation
if v and v~=true then--reject nil/boolean; faster than 2 type() comparisons
local str = tostring(v)--functions not filtered since unlikely passed by accident (Scribunto does not have userdata/thread types)
if str~=v and str=='table' then return rawget(v, 1) and table.concat(v) end--tostring(string-type) returns same ref; same refs compare faster than type()
if str~='' then return str end--numbers are coerced to string per table.concat op; appending in string form saves ops on repeat concat
end
end
local noOp, MBpairs = function()end do local iMap, vMap, oMap, pIter, pOther, pFast, Next--Map
local function init()--init = noOp after first run
function Next(t) return next, t end--slightly faster to do this than to use select()
function pIter(t, k) k = (iMap[t] or MBpairs(t, true) and iMap[t])[not k and 1 or vMap[t][k]] return k, t[k] end--don't use rawget; accepting unmapped tables does not measurably affect performance.
function pOther(t, k) k = (oMap[t] or MBpairs(t, true) and oMap[t])[nil==k and 1 or vMap[t][k]] return k, t[k] end--comparison to nil because false is a valid key
function pFast(t, k) k = not k and 1 or k < (vMap[t] or #t) and k + 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached
--k and k < (vMap[t] or #t) and k + 1 or not k and 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached
local mk = {__mode = 'k'}--use mode 'k'; found that mode 'kv' sometimes garbage collects maps mid-loop (may not error because iterators auto re-map, but that's expensive)
init, iMap, vMap, oMap = noOp, setmetatable({}, mk), setmetatable({}, mk), setmetatable({}, mk)--iMap is numeric keys, oMap is non-numeric keys, and vMap points to next key
end
function MBpairs(t, ...)--pairs always iterates in order
local iter, ex = ...
iter = iter==init()--nil
if iter and not oMap[t] and ex==nil and rawget(t, 1)~=nil and next(t, #t)==nil then--while possible to miss keys, more thorough check would negate the benefit of pFast
vMap[t] = #t return pFast, t, nil
elseif ... or not vMap[t] or select('#', ...)~=1 then
local ti, tn, to, n = {}, {}, {}, #t--reduces table lookups
iMap[t], vMap[t], oMap[t] = ti, tn, to
for k = 1, n do ti[k], tn[k] = k, k + 1 end--stage one avoids number type checking op in stage two for most numeric keys
for k in (ex or Next)(t) do
if not tn[k] then table.insert(tonumber(k)~=k and to or ti, k) end
end
if #ti~=n then
table.sort(ti)
for k = 1, #ti do tn[ti[k]] = k + 1 end--somewhat wasteful, but trying to avoid overwriting can be even more expensive
end
for k = 1, #to do tn[to[k]] = k + 1 end
end
return iter and pIter or oMap[t] and pOther or noOp, t--noOp for mapless
end
end
local parent, rawkey, spec do--new scope for variables not reused outside (reduces number of var names that need to checked outside of scope)
local mkv = {__mode='kv', __call=function(t,k,v)t[k]=v return k end}--shared meta for Buffer parent property, raw mode, and specialized functions
parent, rawkey, spec = setmetatable({}, mkv), setmetatable({}, mkv), setmetatable({}, mkv)--shared meta less memory
end
local MB, MBi, MBmix, buffHTML, gfuncs, noCache, Element do--minimize number of locals per scope to reduce time spent sifting through irrelevant variable names
local _stream do local stream--keep stream near top of scope
local function init(f)--init = noOp after first run
local function each(self, ...)
for k = 1, select('#', ...) do
k = Valid(select(k, ...))--slightly faster than table.insert(self, (Valid(select(k, ...))))
if k then table.insert(self, k) end
end
return self
end
init, stream, _stream = noOp, {
__call = function(t, v) v = v and Valid(v) return v and table.insert(t, v) or t end,--last_concat cleared before entering stream mode
__index = function(t, i) return i=='each' and each or MB.__index(t, i) and setmetatable(t, MB)[i] end,--no table look up minimizes resources to retrieve the only stream function
__tostring = function(t) return setmetatable(t, MB)() end
} for k, v in next, MB do stream[k] = stream[k] or v end
setmetatable(stream, getmetatable(MB))
end
function _stream(self, ...) self.last_concat = init() return setmetatable(self, stream):each(...) end
end
local function isMBfunc(Buffer, s, ...)--helper for :getParent()-like methods (including getBuffer which does not return a parent)
return s and (select('#', ...)==0 and--eventually should figure out to make this work for :getHTML which is very similar
(not rawkey[s] and tostring(s):match'^_.*' and MB.__index(Buffer, s) and MB.__index(Buffer, s)(Buffer) or MBmix(Buffer, s))--unprefixed function names append as a string
or assert(MB.__index(Buffer, s), ('" %s " does not match any available Module:Buffer function'):format(s))(Buffer, ...)--getParent is a one-way trip so one-time assert not expensive
) or Buffer
end
local function MBselect(n, ...)--helper for :_out and :_str
local n, seps = n - 1, {select(2, ...)}
if type(seps[n])=='table' then
if buffHTML and rawget(seps[n], buffHTML) then return ... end
setmetatable(seps, {__index = setmetatable(seps[n], {__index = function(t) return rawget(t, 1) end})})[n] = nil
end
return ..., seps
end
local _inHTML do local lastBuffer, lastHTML
local function init(...)--init replaced and new version called on return
local create, mwFunc = mw.html.create do
local mwHTMLmeta = getmetatable(create())
buffHTML, mwFunc, _inHTML = setmetatable(mw.clone(mwHTMLmeta), getmetatable(MB)), mwHTMLmeta.__index--buffHTML declared near top of module; remove _inHTML from outer scope
function init(nodes, ...)
local name, args, tag = select(... and type(...)=='table' and 1 or 2, nil, ...)
tag = create(Valid(name), args)
if nodes then table.insert(nodes, tag.parent and tag or rawset(tag, 'parent', parent[nodes])) end
if args then
local a, b = args.selfClosing, args.parent
args.selfClosing, args.parent = nil
if next(args) then Element._add(parent(tag.nodes, tag), args) end
args.selfClosing, args.parent = a, b--in case args is reused
end
return tag
end
for k, v in next, {[mw] = mwHTMLmeta,
__call = function(h, v) return MBmix(spec[h.nodes] and h.nodes or spec(setmetatable(parent(h.nodes, h), MB), Element), v) end,
__concat = false,--false means take from MB
__eq = false
} do buffHTML[k] = v or MB[k] end
end
local nonSelf, BHi = {tag=true,done=true,allDone=true}, buffHTML.__index do local g
g = {__index = function(t, i)
if gfuncs and gfuncs[i] then g.__index, gfuncs = gfuncs return g.__index[i] end
end}
setmetatable(nonSelf, g)
setmetatable(BHi, g)
end
for k in next, nonSelf do--any HTML objects returned by these funcs will be granted Module:Buffer enhancements
local func = mwFunc[k]
BHi[k] = function(t, ...) local HTML = func(t, ...) return parent[HTML] and HTML or setmetatable(parent(HTML, t), buffHTML) end
end
do local function joinNode(HTML, sep)
local nodes, join = HTML.nodes
if noCache and rawkey[sep] or Valid(sep) then join, HTML.nodes = tostring(rawset(HTML, 'nodes', {MB.__call(nodes, sep)})), nodes end
return join or tostring(HTML)
end
for k, v in next, {
getParent = function(HTML, ...) lastHTML = HTML return MBi.getParent(HTML:allDone(), ...) end,--return to Buffer that created the HTML tree
getBuffer = function(HTML, ...) lastHTML = HTML return isMBfunc(lastBuffer, ...) end,--return to last used
killParent = function(HTML, ...) MBi.killParent(HTML:allDone(), ...) return HTML end,
_out = function(HTML, ...)
if ...==0 then MBi._out(HTML.nodes, ...) return HTML end
lastHTML, HTML = HTML, HTML:allDone()
local n, ops, seps = select('#', ...)
if n > 1 then
local ops, seps = MBselect(n, ...)
return parent[HTML]:_in(joinNode(HTML, rawget(seps, 0))):_out(ops, rawset(seps, buffHTML, true))
end
return parent[HTML]:_(joinNode(HTML, ...))
end,
_str = function(HTML, ...)--does not set lastHTML
if ...==0 then return joinNode(HTML, select(2, ...)) end--passing 0 strings without calling allDone()
local HTML, n = HTML:allDone(), select('#', ...)
if n > 1 then
local ops, seps = MBselect(n, ...)
return parent[HTML]:_in(joinNode(HTML, rawget(seps, 1))):_str(ops, rawset(seps, buffHTML, true))
end
return joinNode(HTML, ...)
end,
_parent = function(HTML, ...) table.insert(HTML.nodes, parent[HTML:allDone()]:_str(...)) return HTML end
} do BHi[k] = v end
end
do local htmlArg, skip, outFuncs = {parent=true,selfClosing=true,tagName=true}, {}
do local out local function func(nodes, ...) return out(parent[nodes], ...) end
outFuncs = setmetatable({
tag = function(nodes, ...) return parent(setmetatable(init(nodes, ...), buffHTML), parent[nodes]) end,
done = function(b, ops)
b = parent[b]
while b.parent and ops~=0 do b, ops = b.parent, ops and ops - 1 or 0 end
return b
end
}, {__index = function(nodes, i)
if rawget(BHi, i) then out = BHi[i] return func end--rawget to exclude globals
end})
end
Element = {
_add = function(nodes, t)
for k, v in MBpairs(t), t, skip[t] do (v~=true and MBmix or noOp)(nodes, v) end
local HTML = parent[nodes] for k, v in MBpairs(t, false) do
if htmlArg[k] then HTML[k] = v
elseif v and v~=true then
if nonSelf[k] then
if k=='tag' then
if type(v)=='table' then
skip[v], k = 1, rawset(create(Valid(v[1])), 'parent', HTML)
Element._add(spec(parent(k.nodes, k, table.insert(nodes, k)), Element), v)
if k.selfClosing then k.nodes = nil else spec[k.nodes], parent[k.nodes] = nil end--free memory/reduce clutter; parent ref will auto-unset when k.nodes is nil
if not k.tagName then k.styles, k.attributes = nil end
else table.insert(nodes, create(v)) end
elseif mwFunc[k] then
if k=='done' and tonumber(v)~=v and v[1] and tonumber(v[1])==v[1] then skip[v] = 1 end
MBmix(outFuncs[k](nodes, skip[v] and v[1]).nodes, v)
elseif v[1] or v[2] then
k = MBi[k](nodes, unpack(v, 1, rawset(skip, v, k=='_B' and 1 or 2)[v]))
Element._add(getmetatable(k) and rawget(k, 'nodes') or k, v)--if k is not a table, then v should not contain any extra keys or this may error.
else MBi[k](nodes, v) end--k probably == '_G' or '_R'
elseif mwFunc[k] then
if type(v)~='table' or rawget(v, 'nodes') then mwFunc[k](HTML, v)
else
local css = k=='css'
for x, y in MBpairs(v, true) do (y and y~=true and mwFunc[k] or noOp)(HTML, css and x:gsub('_', '-') or x, y) end--iterate non-numbers first
for _, y in MBpairs(v, nil) do (y and y~=true and mwFunc[k] or noOp)(HTML, y) end--don't bother with gsub since text must be quoted anyhow
end
elseif rawget(Element, k) or rawget(MBi, k) then
if tonumber(v)==v or v[1]==nil or getmetatable(v) then (Element[k] or MBi[k])(nodes, v)--v is probably string-able object, or a table to be handled by :_all
else (Element[k] or MBi[k])(nodes, unpack(v, 1, table.maxn(v))) end--v is definately a table
else mwFunc.css(HTML, k:gsub('_', '-', 1), tostring(v)) end--oddly enough, :_add clocked its fastest runtime after adding auto-gsub as a feature
skip[v] = nil
end
end
return nodes
end
}
local tempMeta = {mode='v', copy={styles=true,attributes=true}}
function tempMeta.__index(t, i) return tempMeta.copy[i] and rawset(t, i, MBi._cc(false, 0, t.orig[i]))[i] or t.orig[i] end
rawkey[setmetatable(Element, {__index = outFuncs, __concat=function(Element, v) return setmetatable({nodes=spec({}, Element),orig=parent[v]}, tempMeta) end})] = math.huge
end
function MBi:getHTML(...)
lastBuffer = self
if ... then
if select('#', ...)==1 then return not rawkey[s] and tostring(...):match'^_' and BHi[...] and BHi[...](lastHTML) or lastHTML(...)
else return assert(BHi[...], ('" %s " does not match any mw.html or Buffer-mw.html function'):format(tostring(...)))(lastHTML, select(2, ...)) end
end
return lastHTML
end
function MBi:_html(...) return MBi._(self, lastHTML, select(spec[self]==Element and select('#', ...)==0 and 1 or 2, true, ...)) end
return init(...)
end
function _inHTML(self, ...)
local HTML = init(nil, ...)
if HTML.selfClosing and spec[self]==Element then self.last_concat = table.insert(self, HTML) return self end
lastBuffer, lastHTML = self, setmetatable(parent(HTML, self), buffHTML)--set after 'args' table processed by :_add
return HTML
end
end
local _var, unbuild do local prev, rebuild
local function init(...)--init replaced before return
local function pick(b, v) return b and table.insert(b, v) or v end
local function c(a, num) return rawset(a.a or a, 0, a[0] and a[0] + a.c or num and a[1] or a[1]:byte())[0] end
local same, build, alt = {__tostring = function(a, b) return a.a[0] and pick(b, a.a.string and string.char(a.a[0]) or a.a.table and a.a[1][a.a[0]] or a.a[0]) end}, {
__index = {c = 1},
__tostring = function(t) return t:_build() end,
table = function(a, b) local i = next(a[1], a[0]) or a[0]==#a[1] and next(a[1]) return pick(b, rawset(a.a or a, 0, i)[1][i]) end,--change rate (a.c) ignored since users control the table's contents
number = function(a, b) return pick(b, c(a, true)) end,
string = function(a, b) return pick(b, string.char(c(a))) end
}, {__index = function(a, i) return a.a[i] end, __tostring = function(a, b) return (rawget(a, 0) and a[0]==tostring(a[0]) and rawset(a, 0, a[0]:byte()) or a).a._build(a, b) end}
local function shift(t, c)
t[0] = t[0] and t[0] + c or t:_build() and t[0] - t.c + c
if t.table then t[0] = (t[0] - 1) % #t[1] + 1 end
end
function rebuild(...)
local v, c = ...
if v or select('#', ...)==0 then
if v and not c then return prev end
local meta, c = select(v and 1 or 3, alt, c, same, 0)
return setmetatable({a = prev, _build = meta.__tostring, c = c}, meta)
elseif v==nil then--no-op
elseif c then shift(prev, c)--v == false
else prev:_build() end
end
init, noCache = function(v, c) prev = setmetatable({v, c = c, _build = build[type(v)] or v, [type(v)] = true, alt = {}}, build) return prev end, true
return init(...)
end
function unbuild(sep)
for k, v in MBpairs(sep, nil) do
k = getmetatable(v) if k and (k==build or k==alt) then shift(v.a or v, -v.c) end
end
end
function _var(self, ...)
local obj if ... and ...~=true then obj = init(...)
elseif prev then
if ...~=false then obj = rebuild(...)
else rebuild(...) end
end
return obj and MBi._(self, obj, nil, true) or self
end
end
local lib; MBi = setmetatable({stream = _stream,
_inHTML = _inHTML,
_var = _var,
_ = function(self, v, ...)
local at, raw = select(select('#', ...)==1 and ...==true and 1 or 2, nil, ...)
if raw then rawkey[self] = math.huge else v = Valid(v) end
if v or raw then
if at or rawkey[self] then raw = #self end--if length increases by more than one after table.insert, then set rawkey[self] = math.huge; rawkey[self] may be equal to a previous 'at'
at, self.last_concat = at and (tonumber(at)~=at and raw + at or at)
table.insert(self, select(at and 1 or 2, at, v))
if at and at < 0 or raw and #self - raw > 1 then rawkey[self] = math.huge elseif at and #self==raw then rawkey[self] = rawkey[self] and math.max(rawkey[self], at) or at end
end--above line looks bizarre because one table.insert op may make length jump from 0 to 8: local wtf={[2]=2,[4]=4,[8]=8}mw.log(#wtf,table.insert(wtf,1),#wtf)
return self
end,
_nil = function(self, at, ...)
if ...~=true and ...~=false then--faster than type(...) ~= 'boolean'
if not at or at=='0' then
self[#self] = ... if ... then rawkey[self] = math.huge end
else
local n, v = tonumber(at), ...
if n~=at then
if n then n = #self + at
elseif at~=true and select('#', ...)==0 then v, n = at, #self end
end
if n then
if v==nil and n > 0 then table.remove(self, n)
else self[math.floor(n)], rawkey[self] = v, math.huge end--floor position for consistency with Table library
end
end
self.last_concat = nil
end
return self
end,
_all = function(self, t, valKey)
for k, v in MBpairs(t) do MBmix(self, v, valKey) end
for k, v in valKey and MBpairs(t, false) or noOp, t do
if tonumber(v) then MBi._(self, k, v)--self not always a buffer
elseif rawget(MBi, k) and v and v~=true then
if v[1]==nil or getmetatable(v) then MBi[k](self, v)
else MBi[k](self, unpack(v, 1, table.maxn(v))) end
end
end
return self
end,
_str = function(t, ...)
local n = select('#', ...)
if n > 1 then
local k, ops, seps, r = 2, MBselect(n, ...)
r = MB(t(seps[1]))
while parent[t] and ops > 1 and r:_(parent[t](seps[k]), 1) do t, k, ops = parent[t], k + 1, ops - 1 end
return table.concat(r, seps[k] or nil)
end
return MB.__call(t, ...)
end,
_in = function (self, ...) return parent(MB(...), self) end,
_out = function(t, ...)
if ...==0 then return parent(t, parent[t], MBi._cc(t, t, MB.__call(t, (select(2, ...))), getmetatable(t))) end--love how :_cc needed nothing new to implement this *self pat on back*
local n = select('#', ...)
if n > 1 then
local k, ops, seps = 1, MBselect(n, ...)
while parent[t] and ops > 0 do t, k, ops = parent[t]:_(t(seps[k])), k + 1, ops - 1 end
elseif parent[t] then return parent[t]:_(t(...)) end
return t
end,
_cc = function(self, clear, copy, meta)
if clear then
if rawequal(clear, copy) then return self, spec[MBi._cc] and setmetatable(spec[MBi._cc], MB)--rawequal to avoid re-string via __eq in case both are different Buffer objects
elseif copy==true then copy = self end
if clear~=0 then
assert(type(clear)=='table', debug.traceback('Buffer:_cc can only "clear" tables. Did you forget to call with a colon?', 2))--errors can be hard to trace without this
for k in self and next or noOp, clear do rawset(clear, k, nil) end
else return MBi._cc(false, {unpack(copy)}, copy) end--copy length w/o empty strings; recursion to avoid self = false causing garbage collection (non-weak child may exist)
if self==false or copy and type(copy)=='table' then--self==false means copy is a table (saves a type op for recursive calls)
meta = meta or getmetatable(copy)
if self and #copy > 1 then--preserves length with empty strings; developed from studying http://www.lua.org/source/5.1/ltable.c.html
local n, null, i, e = #copy, {}, math.ldexp(2, select(2, math.frexp(#copy)) - 2)
e, spec[MBi._cc], parent[null] = i - 1, null, clear
for k = 1, e do table.insert(clear, false) end
while i<=n do table.insert(clear, i, '') i, null[i] = i + math.ldexp(2, select(2, math.frexp(n - i)) - 2), '' end
for k = 1, e do rawset(clear, k, nil) end
end
for k, v in next, copy do rawset(clear, k, type(v)=='table' and MBi._cc(false, 0, v) or v) end
elseif copy then rawset(clear, 1, (Valid(copy))) end
rawkey[setmetatable(clear, meta)], parent[clear] = rawkey[copy], parent[copy]
end
return self and rawset(self, 'last_concat', nil) or clear
end,
_parent = function(self, ...) return parent[self] and MBi._(self, parent[self]:_str(...)) or self end,
getParent = function(self, ...) return isMBfunc(parent[self] or parent[parent(self, setmetatable({}, MB))], ...) end,
killParent = function(self, ...) return parent[self] and isMBfunc(parent[self], ...) and parent(self) or self end,
_build = function(self, t) table.insert(t, self()) end,--for compatibility with mw.html:node()
last_concat = false--prevent library check
}, {__index = function(t, i)--import string, mw.text, and mw.ustring libraries on an as-needed basis
local func = string[i] or mw.text[i] or mw.ustring[i] or type(i)=='string' and mw.ustring[i:match'^u(.+)'] if func then
lib = lib or function (s, f, ...)
if parent[s] and next(s)==nil then return s:_((f(tostring(parent[Element and (spec[s]==Element and s:allDone() or spec[parent[s]]==Element and parent[s]) or s]), ...))) end
return f(tostring(s), ...)--not using ternary/logical operators here to allow multiple return values
end
return rawset(t, i, i:match'^u?gsub' and function(self, p, r, ...)return lib(self, func, p, r or '', ...)end--Why are ugsub/gsub special? because empty strings are against my religion!
or function(self, ...)return lib(self, func, ...)end)[i]
end
end})
end
function MBmix(t, v, ...) return v and ((type(v)~='table' or getmetatable(v)) and MBi._(t, v) or (select('#', ...)==0 and spec[t] and spec[t]._add or MBi._all)(t, v, ...)) or t end--:_all always passes two args
local _G, new_G = _G--localize _G for console testing (console _G ~= module _G)
return setmetatable({__index = function(t, i) return spec[t] and spec[t][i] or MBi[i] end,
__call = function(t, ...)
local rawsep, sep, i, j, raw = noCache and rawkey[...] and ..., ...
if i or j or rawsep or Valid(sep) then
raw, sep, i, j = rawkey[spec[t]] or rawkey[t], rawsep or Valid(sep), i and (i~=tonumber(i) and i + #t or i), j and (j~=tonumber(j) and j + #t or j)
if rawsep or raw and (raw>=(j or #t) or i < 1) then
raw, i, j = {}, i and math.floor(i), j and math.floor(j)--floor for consistency with table.concat(t, sep, i, j), which ignores decimals
raw.lc, t.last_concat = t.last_concat--temporarily unset last_concat to prevent disqualification from mapless iteration
for k, v in MBpairs(t) do
if raw[1] or not i or k>=i then if j and k > j then break end
if raw.s then raw.s = table.insert(raw, tostring(sep)) end--if sep contains v and v is a Buffer-variable, sep must be strung before v
k = Valid(v) if k then
raw.s = rawsep or sep and raw[1] and table.insert(raw, sep)
table.insert(raw, k)
end
end
end
if rawsep and not raw.s then raw[#raw] = unbuild(sep) end--unbuild rawsep if final index in t was invalid
t.last_concat = raw.lc return table.concat(raw)
end
return table.concat(t, sep, i and math.max(i, 1), j and math.min(j, #t))
end
return MB.__tostring(t)
end,
__tostring = function(t)
if t.last_concat then return t.last_concat end
local r = rawkey[spec[t]] or rawkey[t]
r = table.concat(r and r>=#t and MBi._all({}, t) or t)
return (noCache or rawset(t, 'last_concat', r)) and r
end,
__concat = function(a, b)
if buffHTML then
for k = 1, 2 do local v = select(k, a, b)--faster than for k, v in pairs{a, b} do
if v and spec[v] and spec[v]==Element then
if parent[v].selfClosing then
if rawequal(a, b) then return (not noCache or parent[v].tagName) and v:_str(0):rep(2) or v:_str(0)..v:_str(0) end--rawequal avoids premature tostring of Buffer:_var objects;
b, a = select(k, b, parent[v], a)
else local temp = Element .. v --helper method; returns a mirror of parent[v]
MBmix(MBmix(parent(temp.nodes, temp), a), k==1 and spec[b]==Element and parent[b] or b)
return buffHTML.__tostring(setmetatable(temp, {__index=parent[v], __mode='v'}))--switch from tempMeta to avoid MBi._cc op of styles/attributes
end
end
end
end
return table.concat(MBmix(MBmix({}, a), b))
end,
__pairs = MBpairs,
__ipairs = MBpairs,
__eq = function(a, b) return tostring(a)==tostring(b) end--avoid a==b in this module; use rawequal(a,b) when they may be different Buffers (premature tostring waste ops and is bad for Buffer:_var)
}, {__tostring = function()return''end,
__call = function(self, ...) MB = MB or self
if new_G then if ... and _G and ...==_G then new_G = ... end
elseif ... and (...==_G or type(...)=='table' and (...)._G==...) then
local Nil, mG = {}, (...):getmetatable() or (...):setmetatable{}:getmetatable()
new_G, _G, gfuncs = ..., ..., {--gfuncs stored for Buffer:_inHTML; new_G is a is a Module:Buffer local declared just before the final return statement.
_G = function(self, i, ...)
local X, save = rawget(new_G, i), select('#', ...)==0 and self or ...
if i and i~=true and not (X and save and rawequal(X, save)) and rawset(new_G, i, save) and (X~=nil or save==nil and new_G[i]~=nil) then--rawequal in case X is another buffer
local mG = getmetatable(new_G) or {__call=mG.__call}
if mG.__index then pcall(rawset, mG.__index, i, X)
else mG.__index = setmetatable(new_G, mG) and {[i] = X} end
end
return self, ...--avoiding __eq with rawequal(self,save) is overkill since buffers can self-save without being passed as save
end,
_R = function(self, i, v, m)
if i~='new_G' then if i and i~=true then rawset(new_G, i , v) end
elseif not v or v==true or v._G~=_G then new_G = setmetatable(v~=true and v or {}, {__call = mG.__call, __index = v~=true and m~=true and (m or new_G) or nil})
else new_G, (not m and (m~=nil or v==new_G) and Nil or getmetatable(v)).__index = v, m~=true and (m or new_G) or nil end--setting Nil.__index is noOp
return self
end,
_2 = function(self, ...)
if new_G[...]~=nil then return new_G[...] end--higher priority so Buffer:_G('new_G', ...) can prevent an overwrite
if ...=='new_G' then return rawset((select('#', ...)~=1 and MBi._R(new_G, ...) or new_G), '_G', _G) end
return select(select('#', ...)==1 and 1 or 2, self:_G(...))--return only one value; 'return select(2, self:_G(...)) or self' doesn't work for returning nil
end,
_B = function(self, v) return v or v==nil and Nil end
} for k, v in next, gfuncs do MBi[k] = v end
setmetatable(Nil,{__concat=MB.__concat,__newindex=noOp,__call=noOp,__tostring=noOp,__metatable=MB,__index=setmetatable({_B=MBi._B,_=function()return Nil end,last_concat=''},
{__index=function(t,i)return (MBi[i] or i and not tonumber(i)) and t._ or nil end})})
function mG.__call(G, k, ...) return (k._G or G.type(k)=='table') and (G.select('#', ...)~=1 and G.rawset(k, ...) or G:rawset(..., k) and k) or G:rawset(k, (...)) and ... end
end
local new = setmetatable({}, self)
if ... and (...)==new_G then return select(2, ...) and MBmix(new:_G((select(2, ...))), select(3, ...)) or new end
return ... and MBi._(new, ...) or new
end,
__index = function(t, i)
MB = MB or t return MBi[i] and function(...) return MBi[i](setmetatable({}, t), select(...==t and 2 or 1,...)) end
end
})
a531c35e1366f84755b75caab181cd45e5330bbe
Module:Arguments
828
9
14
2022-06-17T23:02:24Z
Hatmanthehat
2
Created page with "-- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string'..."
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
3134ecce8429b810d445e29eae115e2ae4c36c53
Module:Navbar
828
10
15
2022-06-17T23:02:56Z
Hatmanthehat
2
Created page with "local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false..."
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = title:fullUrl('action=edit'), ['url'] = true },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = title:fullUrl('action=history'), ['url'] = true },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
a5c8d3a8f8beb18984ea7f145ddbdf88a065d23e
Module:Navbar/configuration
828
11
16
2022-06-17T23:03:44Z
Hatmanthehat
2
Created page with "return { ['templatestyles'] = 'Module:Navbar/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class ind..."
Scribunto
text/plain
return {
['templatestyles'] = 'Module:Navbar/styles.css',
['box_text'] = 'This box: ', -- default text box when not plain or mini
['title_namespace'] = 'Template', -- namespace to default to for title
['invalid_title'] = 'Invalid title ',
['classes'] = { -- set a line to nil if you don't want it
['navbar'] = 'navbar',
['plainlinks'] = 'plainlinks', -- plainlinks
['horizontal_list'] = 'hlist', -- horizontal list class
['mini'] = 'navbar-mini', -- class indicating small links in the navbar
['this_box'] = 'navbar-boxtext',
['brackets'] = 'navbar-brackets',
-- 'collapsible' is the key for a class to indicate the navbar is
-- setting up the collapsible element in addition to the normal
-- navbar.
['collapsible'] = 'navbar-collapse',
['collapsible_title_mini'] = 'navbar-ct-mini',
['collapsible_title_full'] = 'navbar-ct-full'
}
}
bbf3d86b48a5b40835e8e232ae9821e6bca390ec
Module:Message box
828
12
17
2022-06-17T23:04:33Z
Hatmanthehat
2
Created page with "-------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-spee..."
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
substCheck = true,
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},
removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>'
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox license.png' -- @todo We need an SVG version of this
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg'
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
imageEmptyCellStyle = true,
templateCategory = 'Talk message boxes'
}
}
e680fc427fcb0ec71939a005ef791dfebc4ba735
18
17
2022-06-17T23:05:31Z
Hatmanthehat
2
Scribunto
text/plain
-- This is a meta-module for producing message box templates, including
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.
-- Load necessary modules.
require('Module:No globals')
local getArgs
local yesno = require('Module:Yesno')
-- Get a language object for formatDate and ucfirst.
local lang = mw.language.getContentLanguage()
-- Define constants
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|talk]])', talkLink)
else
talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'>''(<span class='date'>%s</span>)''</span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
if cfg.imageEmptyCellStyle then
self.imageEmptyCellStyle = 'border:none;padding:0;width:1px'
end
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
or 'Imbox notice.png', imageSize)
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
end
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):css('width', '52px')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
:cssText(self.imageEmptyCellStyle or nil)
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):css('width', '52px')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:css('text-align', 'center')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
b1fd4c365d29a34bbcf3aef2adec6701ed0efe45
Module:Message box/configuration
828
13
19
2022-06-17T23:06:02Z
Hatmanthehat
2
Created page with "-------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-spee..."
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
substCheck = true,
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},
removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>'
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox license.png' -- @todo We need an SVG version of this
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg'
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
imageEmptyCellStyle = true,
templateCategory = 'Talk message boxes'
}
}
e680fc427fcb0ec71939a005ef791dfebc4ba735
Module:No globals
828
14
20
2022-06-17T23:06:49Z
Hatmanthehat
2
Created page with "local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt)"
Scribunto
text/plain
local mt = getmetatable(_G) or {}
function mt.__index (t, k)
if k ~= 'arg' then
error('Tried to read nil global ' .. tostring(k), 2)
end
return nil
end
function mt.__newindex(t, k, v)
if k ~= 'arg' then
error('Tried to write global ' .. tostring(k), 2)
end
rawset(t, k, v)
end
setmetatable(_G, mt)
8ce3969f7d53b08bd00dabe4cc9780bc6afd412a
Module:Yesno
828
15
21
2022-06-17T23:07:27Z
Hatmanthehat
2
Created page with "-- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val =..."
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
f767643e7d12126d020d88d662a3dd057817b9dc
Module:Documentation
828
16
22
2022-06-17T23:08:15Z
Hatmanthehat
2
Created page with "-- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purpos..."
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return mw.ustring.format('[[%s|%s]]', page, display)
else
return mw.ustring.format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return mw.ustring.format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return '<span class="' .. message('toolbar-class') .. '">('
.. table.concat(ret, ' | ') .. ')</span>'
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p._getModuleWikitext(args, env))
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:attr('role', 'complementary')
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
:attr('aria-label', args.heading == '' and 'Documentation' or nil)
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.fullUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
function p._getModuleWikitext(args, env)
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.contentModel ~= 'Scribunto' then return end
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
local moduleWikitext = package.loaded["Module:Module wikitext"]
if moduleWikitext then
return moduleWikitext.main()
end
end
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[Image:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle
and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local pagetype
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
else
pagetype = message('sandbox-notice-pagetype-other')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if compareUrl then
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
else
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
omargs.text = text .. makeCategoryLink(message('sandbox-category'))
-- 'documentation-clear'
return '<div class="' .. message('clear') .. '"></div>'
.. require('Module:Message box').main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
if editProt then
-- The page is edit-protected.
return require('Module:Protection banner')._main{
message('protection-reason-edit'), small = true
}
elseif moveProt and moveProt ~= 'autoconfirmed' then
-- The page is move-protected but not edit-protected. Exclude move
-- protection with the level "autoconfirmed", as this is equivalent to
-- no move protection at all.
return require('Module:Protection banner')._main{
action = 'move', small = true
}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
local data = {}
data.title = title
data.docTitle = docTitle
-- View, display, edit, and purge links if /doc exists.
data.viewLinkDisplay = message('view-link-display')
data.editLinkDisplay = message('edit-link-display')
data.historyLinkDisplay = message('history-link-display')
data.purgeLinkDisplay = message('purge-link-display')
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
data.preload = preload
data.createLinkDisplay = message('create-link-display')
return data
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local function escapeBrackets(s)
-- Escapes square brackets with HTML entities.
s = s:gsub('%[', '[') -- Replace square brackets with HTML entities.
s = s:gsub('%]', ']')
return s
end
local ret
local docTitle = data.docTitle
local title = data.title
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
ret = '[%s] [%s] [%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink)
else
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
ret = '[%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, createLink, purgeLink)
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:attr('id', 'documentation-heading')
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editUrl = docTitle:fullUrl{action = 'edit'}
local editDisplay = message('edit-link-display')
local editLink = makeUrlLink(editUrl, editDisplay)
local historyUrl = docTitle:fullUrl{action = 'history'}
local historyDisplay = message('history-link-display')
local historyLink = makeUrlLink(historyUrl, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'}
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
95ab9de543475e37250dc94558a5508a3c7c3dfc
Module:Documentation/config
828
17
23
2022-06-17T23:08:36Z
Hatmanthehat
2
Created page with "---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------..."
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page'
cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page'
cfg['sandbox-notice-pagetype-other'] = 'sandbox page'
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.'
cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).'
cfg['sandbox-notice-compare-link-display'] = 'diff'
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.'
cfg['sandbox-notice-testcases-link-display'] = 'test cases'
cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).'
cfg['sandbox-notice-testcases-run-link-display'] = 'run'
-- cfg['sandbox-category']
-- A category to add to all template sandboxes.
cfg['sandbox-category'] = 'Template sandboxes'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[wikipedia:Wikipedia:Template documentation|documentation]] is [[wikipedia:Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[wikipedia:Wikipedia:Lua|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
81c27f1dccc0f0b9b5e83cc77a1de67f87911837
Template:Stub documentation
10
18
24
2022-06-17T23:09:39Z
Hatmanthehat
2
Created page with "This is a '''stub template'''. A brief explanation of these templates follows; for full details please consult [[Wikipedia:Stub]]. === What is a stub? === A stub is an article containing only a few sentences of text which is too short to provide encyclopedic coverage of a subject. === How is a stub identified? === * If possible, try to find the most appropriate stub template for the article. A full list can be found at Wikipedia:WikiProject Stub sorting/List of stub..."
wikitext
text/x-wiki
This is a '''stub template'''. A brief explanation of these templates follows; for full details please consult [[Wikipedia:Stub]].
=== What is a stub? ===
A stub is an article containing only a few sentences of text which is too short to provide encyclopedic coverage of a subject.
=== How is a stub identified? ===
* If possible, try to find the most appropriate stub template for the article. A full list can be found at [[Wikipedia:WikiProject Stub sorting/List of stubs]].
* More than one stub template may be used, if necessary, though no more than four should be used on any article.
* Place a stub template ''[[MOS:ORDER|at the very end]]'' of the article, after the "External links" section, any navigation templates, and the category tags. As usual, templates are added by including their name inside double braces, e.g. <code><nowiki>{{stub}}</nowiki></code>.
=== Further information ===
Further information can be found at:
* [[Wikipedia:Stub]]
* [[Wikipedia:WikiProject Stub sorting]]
New stub templates and categories (collectively "stub types") should not be created without prior proposal at [[Wikipedia:WikiProject Stub sorting/Proposals]]. This allows for the proper coordination of all stub types across Wikipedia, and for the checking of any new stub type for possible problems prior to its creation.
=== See also ===
* [[Template:Empty section]] – To flag an empty section as a '''stub section'''
* [[Template:Expand section]] – To flag sections selectively as incomplete
* [[Template:Data missing]] – To flag missing information or other data
* [[Wikipedia:Article assessment]]
<noinclude>
{{documentation}}
[[Category:Template documentation]]
</noinclude>
8bed1c68d6998aafd4d31a1b43e9629a9438ea44
Module:Documentation/styles.css
828
19
25
2022-06-17T23:20:11Z
Hatmanthehat
2
Created page with "/* {{pp|small=yes}} */ .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bott..."
sanitized-css
text/css
/* {{pp|small=yes}} */
.documentation,
.documentation-metadata {
border: 1px solid #a2a9b1;
background-color: #ecfcf4;
clear: both;
}
.documentation {
margin: 1em 0 0 0;
padding: 1em;
}
.documentation-metadata {
margin: 0.2em 0; /* same margin left-right as .documentation */
font-style: italic;
padding: 0.4em 1em; /* same padding left-right as .documentation */
}
.documentation-startbox {
padding-bottom: 3px;
border-bottom: 1px solid #aaa;
margin-bottom: 1ex;
}
.documentation-heading {
font-weight: bold;
font-size: 125%;
}
.documentation-clear { /* Don't want things to stick out where they shouldn't. */
clear: both;
}
.documentation-toolbar {
font-style: normal;
font-size: 85%;
}
ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb
Module:Navbar/styles.css
828
20
26
2022-06-17T23:20:37Z
Hatmanthehat
2
Created page with "/* {{pp|small=yes}} */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar-collapse { float: left; text-align: left; } .navbar-boxtext { word-spacing: 0; } .navbar ul { display: inline-block; white-space: nowrap; line-height: inherit; } .navbar-brackets::before { margin-right: -0.125em; content: '[ '; } .navbar-brackets::after { margin-left: -0.125em; content: ' ]'; } .navbar li { word-spacing: -0.125em; } .navbar a > span, .nav..."
sanitized-css
text/css
/* {{pp|small=yes}} */
.navbar {
display: inline;
font-size: 88%;
font-weight: normal;
}
.navbar-collapse {
float: left;
text-align: left;
}
.navbar-boxtext {
word-spacing: 0;
}
.navbar ul {
display: inline-block;
white-space: nowrap;
line-height: inherit;
}
.navbar-brackets::before {
margin-right: -0.125em;
content: '[ ';
}
.navbar-brackets::after {
margin-left: -0.125em;
content: ' ]';
}
.navbar li {
word-spacing: -0.125em;
}
.navbar a > span,
.navbar a > abbr {
text-decoration: inherit;
}
.navbar-mini abbr {
font-variant: small-caps;
border-bottom: none;
text-decoration: none;
cursor: inherit;
}
.navbar-ct-full {
font-size: 114%;
margin: 0 7em;
}
.navbar-ct-mini {
font-size: 114%;
margin: 0 4em;
}
9d4056f949b4f0b159e3d40dfb1a5f01e72f9571
Category:Roleplaying guides
14
21
29
2022-06-17T23:27:35Z
Hatmanthehat
2
new category
wikitext
text/x-wiki
Basically everything you need to know about roleplaying in this game. Pretty important for a headstart to the game.
829c3060f128dbe1f9f7ac3e00070d775eb84627
Category:Lore
14
22
30
2022-06-17T23:35:54Z
Hatmanthehat
2
Created page with "How the fictional world of Orange Blossom Beach happened, including everything surrounding the story"
wikitext
text/x-wiki
How the fictional world of Orange Blossom Beach happened, including everything surrounding the story
7697c7561d863d8609cc8eee08abc8a4bdc83735
51
30
2022-06-20T04:29:08Z
Hatmanthehat
2
wikitext
text/x-wiki
How the fictional world of Orange Blossom Beach happened, including everything surrounding the story. Click the other subcategories to discover more about the lore.
87c2b0aed4386e77085d8b79fceb3ca412dd9234
MediaWiki:Sidebar
8
24
33
2022-06-18T14:40:51Z
Hatmanthehat
2
Created page with " * navigation ** mainpage|mainpage-description ** guides|Guides to the game ** lore|Lore ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES"
wikitext
text/x-wiki
* navigation
** mainpage|mainpage-description
** guides|Guides to the game
** lore|Lore
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help-mediawiki
* SEARCH
* TOOLBOX
* LANGUAGES
9853eeae657448b6f08f6b4716637fc43e9a3ab7
34
33
2022-06-18T14:42:26Z
Hatmanthehat
2
wikitext
text/x-wiki
* navigation
** mainpage|mainpage-description
** Category:Guides|Guides
** Category:Lore|Lore
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help-mediawiki
* SEARCH
* TOOLBOX
* LANGUAGES
f1d7582c8c8ea67935a81d6b2ec5b70a4a3349ed
43
34
2022-06-20T00:00:20Z
Hatmanthehat
2
wikitext
text/x-wiki
* navigation
** mainpage|mainpage-description
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help-mediawiki
* Useful links
** Category:Guides|Guides
** Category:Lore|Lore
** Category:Locations|Locations
* SEARCH
* TOOLBOX
* LANGUAGES
f2684f75fdc9ad3f367d4bf21ee8d15c554604ab
44
43
2022-06-20T00:02:10Z
Hatmanthehat
2
wikitext
text/x-wiki
* navigation
** mainpage|mainpage-description
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help-mediawiki
* Useful links
** Category:Map_locations|Map locations
** Category:Guides|Guides
** Category:Lore|Lore
* SEARCH
* TOOLBOX
* LANGUAGES
27a39e7be3a5c30ac47b51ef8ccef7b4965e0c11
Category:Guides
14
25
35
2022-06-18T14:46:09Z
Hatmanthehat
2
Created page with "General guides on how to play the game, tips-and-tricks on what to do, and how to roleplay."
wikitext
text/x-wiki
General guides on how to play the game, tips-and-tricks on what to do, and how to roleplay.
7c1a358446ec50ef23f6da5951c698573c3919f2
Orange Blossom Beach (game)
0
26
37
2022-06-19T21:43:46Z
Hatmanthehat
2
entire new page about OBB
wikitext
text/x-wiki
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009 Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploaders account deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
104d88b6e7580fb2bf85744eafcdefd9f71d48aa
39
37
2022-06-19T21:48:12Z
Hatmanthehat
2
Hatmanthehat moved page [[Orange Blossom Beach:About]] to [[Orange Blossom Beach]]: so that it counts as a normal page
wikitext
text/x-wiki
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009 Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploaders account deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
104d88b6e7580fb2bf85744eafcdefd9f71d48aa
42
39
2022-06-19T23:58:25Z
Hatmanthehat
2
wikitext
text/x-wiki
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009 Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
8bbffeec0e08318a0732636e9b23801d9dc76e73
49
42
2022-06-20T04:27:44Z
Hatmanthehat
2
wikitext
text/x-wiki
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009 Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
3f7d2f3abecebcc19c3b18a7710dbf36e58c1499
Orange Blossom Beach:About
4
27
40
2022-06-19T21:48:13Z
Hatmanthehat
2
Hatmanthehat moved page [[Orange Blossom Beach:About]] to [[Orange Blossom Beach]]: so that it counts as a normal page
wikitext
text/x-wiki
#REDIRECT [[Orange Blossom Beach]]
c57291e33a92d1c69c94afdeef4f58e18014387b
Category:Map locations
14
28
45
2022-06-20T04:01:25Z
Hatmanthehat
2
Created page with "Main locations in the city. Can range from businesses to streets."
wikitext
text/x-wiki
Main locations in the city. Can range from businesses to streets.
d5c1e3cf8c1ede0a1e813291d4a6ca0ffd8de1ff
Category:Organizations
14
29
46
2022-06-20T04:03:51Z
Hatmanthehat
2
Created page with "[[Category:Lore]]"
wikitext
text/x-wiki
[[Category:Lore]]
d226586ab1304beab7a8638b3f42eac2f8cf01ce
Central Red
0
30
47
2022-06-20T04:26:31Z
Hatmanthehat
2
Created page with "[[Category:Organizations]] Central Red is a semi-private science research company involved in the lore of [[Orange Blossom Beach]]. It was founded in cooperation with the European Union and the United States in 1990. == About =="
wikitext
text/x-wiki
[[Category:Organizations]]
Central Red is a semi-private science research company involved in the lore of [[Orange Blossom Beach]]. It was founded in cooperation with the European Union and the United States in 1990.
== About ==
fe0bce97a8c3512163ede559a99eb5cbbe982f13
48
47
2022-06-20T04:27:02Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Organizations]]
Central Red is a semi-private science research company involved in the lore of [[Orange Blossom Beach]]. It was founded in cooperation with the European Union and the United States in 1990.
== About ==
280f19aab3063ca5f36806c5dd9f9d7d13d01a7b
User:Hatmanthehat
2
31
52
2022-06-20T04:37:09Z
Hatmanthehat
2
Created page with "hi i make obb scripting and stuff"
wikitext
text/x-wiki
hi i make obb scripting and stuff
2862ce6c270480f52e38cb6b6a34c0987fb5cfcd
Central Red - US
0
32
53
2022-06-20T04:37:54Z
2601:346:27F:C2E0:5C10:2DF7:5FCF:3449
0
Created Page
wikitext
text/x-wiki
Central Red - US High Security Storage Facility is a [[Central Red]] storage facility located in [[Orange Blossom Beach, FL]]. Central Red - US was built in the year 1998.
98e32e005e23cb7f313fc314f591da7ef333fbb0
73
53
2022-06-20T05:00:35Z
Hatmanthehat
2
wikitext
text/x-wiki
Central Red - US High Security Storage Facility is a [[Central Red]] storage facility located in [[Orange Blossom Beach, FL]]. Central Red - US was built in the year 1998.
[[Category:Map locations]]
e015eb139e38de616e4a89ad7c5f86b5fd518572
75
73
2022-06-20T05:20:14Z
Carsop
4
wikitext
text/x-wiki
Central Red - US High Security Storage Facility is a [[Central Red]] storage facility located outside of [[Orange Blossom Beach]] off State Road 30. Central Red - US was built in the year 1998.
[[Category:Map locations]]
74b4cc1dec703393d528183bfc375d32a9a7132d
Orange Blossom Beach (game)
0
26
54
49
2022-06-20T04:39:47Z
Hatmanthehat
2
Hatmanthehat moved page [[Orange Blossom Beach]] to [[Orange Blossom Beach (game)]]: It can mean 2 different things
wikitext
text/x-wiki
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009 Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
3f7d2f3abecebcc19c3b18a7710dbf36e58c1499
58
54
2022-06-20T04:42:48Z
Hatmanthehat
2
wikitext
text/x-wiki
{{about||the city of Orange Blossom Beach|Orange Blossom Beach (city)}}
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009 Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
6e602061fbb63e3b58b58cea6b313b075db4d082
59
58
2022-06-20T04:44:26Z
Hatmanthehat
2
wikitext
text/x-wiki
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach (city)]].''
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009 Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
8edcb42f0509379e73e9c4142f80e55fda102cf6
60
59
2022-06-20T04:46:13Z
Carsop
4
Turned Roblox into a link to the wikipedia page.
wikitext
text/x-wiki
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach (city)]].''
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009 Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
8f65a432099761fe2869e95978c9c545f2d54e7e
62
60
2022-06-20T04:47:15Z
Hatmanthehat
2
wikitext
text/x-wiki
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009 Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
c0ecc53a7b4a88f54ada48c13addc38d97c16c28
70
62
2022-06-20T04:53:00Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Miscellaneous_information]]
[[Category:Lore]]
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009 Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
3393ff7e2f6cce32c1e4c6f5db98c8221a955f69
78
70
2022-06-20T18:54:46Z
Orangeblossombeach
6
wikitext
text/x-wiki
[[Category:Miscellaneous_information]]
[[Category:Lore]]
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
{{stub}}
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009, set in the state of Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
f09a01d002f134e47921dca0a35efd1e55cfe5a5
80
78
2022-06-24T14:38:07Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Miscellaneous_information]]
[[Category:Lore]]
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009, set in the state of Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
{{stub}}
d5535d6c7d75895b07c128a29fbc3fc5cd26dd68
81
80
2022-06-24T14:38:24Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Miscellaneous_information]]
[[Category:Lore]]
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009, set in the state of Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
{{stub}}
068b35050667fded9e2cd91b6f8c3d5c32c6d7b2
Orange Blossom Beach
0
33
55
2022-06-20T04:39:47Z
Hatmanthehat
2
Hatmanthehat moved page [[Orange Blossom Beach]] to [[Orange Blossom Beach (game)]]: It can mean 2 different things
wikitext
text/x-wiki
#REDIRECT [[Orange Blossom Beach (game)]]
23ca74039464c5847f77860f3481de83c2fdfa71
57
55
2022-06-20T04:40:15Z
Hatmanthehat
2
wikitext
text/x-wiki
#REDIRECT [[Orange Blossom Beach (game)]]
#REDIRECT [[Orange Blossom Beach (city)]]
133d94ebe7c1a19186741d84651157bbdc04af62
61
57
2022-06-20T04:46:37Z
Hatmanthehat
2
Removed redirect to [[Orange Blossom Beach (game)]]
wikitext
text/x-wiki
Orange Blossom Beach is a city that takes place in Florida
bc575d8071a196c1373a4e524a50d64f96aa55a5
63
61
2022-06-20T04:48:00Z
Hatmanthehat
2
wikitext
text/x-wiki
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a city that takes place in Florida
7dd536c7c668613c8a50dbd7dc7cb3b5c30bd778
66
63
2022-06-20T04:49:28Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a city that takes place in Florida
fdc2c75e435b512be69da593fff5297795326dc1
79
66
2022-06-21T02:25:16Z
Hubblybubbly123
8
added stuff
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a minor city in Florida with a total population of around 10,345. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s.
It is also located near the American Headquarters of Central Red, With tests being conducted daily in the facility mainly consisting of teleportation and genetic manipulation technology, with it being on the causes of large seismic activity in the lower Florida area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since it's creation.
Orange Blossom Beach is also the origin point of infamous fast food chain, Tacoball. With it's delicious array of mouth-watering food being spread across the United States and eventually the World. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for world renowned attorney Earl Harpmann, with his knowledge of the law making him the best Lawyers to ever currently live.
9ac15d04c02cc0cbbfd141dce33b145ccc70d3cc
83
79
2022-06-30T18:59:36Z
Orangeblossombeach
6
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a minor city in Florida with a total population of around 45,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s.
It is also located near the American Headquarters of Central Red, With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since it's creation.
Orange Blossom Beach is also the origin point of infamous fast food chain, Tacoball. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area.
1bba1984afe91850bb581fff97e9e827292a8936
84
83
2022-06-30T19:00:07Z
Orangeblossombeach
6
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s.
It is also located near the American Headquarters of Central Red, With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since it's creation.
Orange Blossom Beach is also the origin point of infamous fast food chain, Tacoball. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area.
ec431c303c5eb548e2fac187637e6c162cbb5b2f
Orange Blossom Beach Filming Studio
0
34
56
2022-06-20T04:40:12Z
GyroscopicPrison
7
made it
wikitext
text/x-wiki
The Orange Blossom Beach Filming Studio is a filming studio located near the DuDu store.
b49ecd42bd3812a625748b0997c1f4d6b9662967
69
56
2022-06-20T04:52:16Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Map_locations]]
The Orange Blossom Beach Filming Studio is a filming studio located near the DuDu store.
b30268959a3900081db9b31e7049b0f4ae29616e
Main Page
0
1
64
41
2022-06-20T04:48:25Z
Hatmanthehat
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the Orange Blossom Beach Wiki! ==
Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach (game)|go here]].
== So what now? ==
Check out the information to your left, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying.
38ecc7187a2e3d20ec2f9d50961906999d1d1ac0
72
64
2022-06-20T04:56:28Z
Hatmanthehat
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the Orange Blossom Beach Wiki! ==
Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach (game)|go here]].
== So what now? ==
Check out the information on the sidebar, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying.
620ec1f06e178c5ca28356ad3ba3016342454303
82
72
2022-06-30T04:38:21Z
Orangeblossombeach
6
wikitext
text/x-wiki
__NOTOC__
== Welcome to the Orange Blossom Beach Wiki! ==
Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, Florida. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach (game)|go here]].
== So what now? ==
Check out the information on the sidebar, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying.
3ab830ec1aab6ba67e8b970c9e026c6d23fc49ce
90
82
2022-08-25T21:55:40Z
Hatmanthehat
2
described what the game has in stock rn
wikitext
text/x-wiki
__NOTOC__
== Welcome to the Orange Blossom Beach Wiki! ==
Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, Florida. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach (game)|go here]].
== What does this game have in stock right now? ==
As of writing this; really not that much. We have almost everything planned out, but we're still working on implementing most of the core features the game needs in order to really make it flourish. There's still a lot we need to do in order to make this game as comparable to any other game you would play on Roblox, but so far it's going pretty well.
You can go to the game right now and create a private server, which will give you admin powers. From there, you can tinker with the game and what we've made so far. Press F1 to open the console (FN + F1 if you're on a mac, or type /console if you can't press F1). From there, you'll be able to run most console commands. Alternatively, you can chat any console command with prefix "!" and it'll interpret it.
And on another topic, if you want guns, they're actually in the game but there's currently no way you can get them through legitimate means. Use the "give" command right now to do that.
But soon enough, we'll (hopefully) develop the game to a point where it's actually playable through normal means.
== So what now? ==
Check out the information on the sidebar, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying.
b527e93cf5a5ba49fb855320f7cc11608b70b6b8
Orange Blossom Beach:About
4
27
65
40
2022-06-20T04:48:39Z
Hatmanthehat
2
Changed redirect target from [[Orange Blossom Beach]] to [[Orange Blossom Beach (game)]]
wikitext
text/x-wiki
#REDIRECT [[Orange Blossom Beach (game)]]
23ca74039464c5847f77860f3481de83c2fdfa71
Category:Miscellaneous information
14
35
67
2022-06-20T04:51:21Z
Hatmanthehat
2
Created page with "Miscellaneous information about the game and the project. Not really needed to know how to play the game or anything, but still teaches you about information and facts such as the inner-workings and what was done to make this game."
wikitext
text/x-wiki
Miscellaneous information about the game and the project. Not really needed to know how to play the game or anything, but still teaches you about information and facts such as the inner-workings and what was done to make this game.
bad8a72727e27dfcfa4cfb6b88305fd111bfef5e
MediaWiki:Sidebar
8
24
68
44
2022-06-20T04:51:48Z
Hatmanthehat
2
wikitext
text/x-wiki
* navigation
** mainpage|mainpage-description
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help-mediawiki
* Useful links
** Category:Miscellaneous information|Miscellaneous information
** Category:Map_locations|Map locations
** Category:Guides|Guides
** Category:Lore|Lore
* SEARCH
* TOOLBOX
* LANGUAGES
e5d9e6e4f7a527b472f047f4d1f8326429125c44
Cramework
0
4
71
50
2022-06-20T04:55:43Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Miscellaneous information]]
{{stub}}
Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in OBB is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so.
== Features ==
Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version.
7e55afd46453ed0f44c454c1c1779ea4051950d9
88
71
2022-08-01T00:37:44Z
Hatmanthehat
2
Craemwork addition
wikitext
text/x-wiki
[[Category:Miscellaneous information]]
{{stub}}
Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in [[Orange Blossom Beach (game)|Orange Blossom Beach]] is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so.
Cramework was officially added to the main game on July 31, 2022 as part of the 0.1.7.1 update for the game.
== Features ==
Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version.
f38800f38633c04f3b4a760ea6358687d60ad57c
Central Red
0
30
74
48
2022-06-20T05:19:47Z
Orangeblossombeach
6
note to hat, please do this i cant write to save my life
wikitext
text/x-wiki
[[Category:Organizations]]
Central Red is a semi-private science research organization involved in the lore of [[Orange Blossom Beach]]. It was founded privately in 1989 however it later was given grants by several players within the European Union and in cooperation with the United States in early 1990.
The massive Research Facility started construction around June 1990 located somewhere short of 5 miles north of Arosa, Switzerland with an approximate 400~900 employees housed and working at the facility at all hours
== About ==
9bf69234d18d50e5bd872964749c0d237f853b38
Category:All stub articles
14
36
76
2022-06-20T16:09:42Z
Hatmanthehat
2
Created page with "All the stub articles on this wiki. Please help expand them with detailed and useful information while also including only the important parts about that article (if you can.)"
wikitext
text/x-wiki
All the stub articles on this wiki. Please help expand them with detailed and useful information while also including only the important parts about that article (if you can.)
dffc6d07cfecb2130aecc1fdf5778fd91aea3573
Category:Stubs
14
37
77
2022-06-20T16:13:31Z
Hatmanthehat
2
Created page with "This is a category of articles with the <nowiki>{{stub}}</nowiki> tag in them. If it is correctly placed there, then please make sure to expand them. If they have been expanded since the tag was originally added to the page, please remove the tag."
wikitext
text/x-wiki
This is a category of articles with the <nowiki>{{stub}}</nowiki> tag in them. If it is correctly placed there, then please make sure to expand them. If they have been expanded since the tag was originally added to the page, please remove the tag.
fb8068e2de96ea25a670e343c60c80015a8671db
French New Toulon
0
38
85
2022-06-30T20:33:48Z
Orangeblossombeach
6
Created page with "test"
wikitext
text/x-wiki
test
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
86
85
2022-07-10T02:45:49Z
Orangeblossombeach
6
wikitext
text/x-wiki
something something french colonists mid 1500s pls edit motor
7948333d74e9c3fe76914198eb358cb48ad39165
87
86
2022-07-19T07:27:09Z
Orangeblossombeach
6
wikitext
text/x-wiki
something something french colonists mid 1500s pls edit motor
yah
593b50b42009e44c1e51e6ff72471c1e23965d48
Category:Versions
14
39
89
2022-08-01T00:42:25Z
Hatmanthehat
2
Created page with "[[Category:Miscellaneous information]] All versions/game updates for [[Orange Blossom Beach (game)|Orange Blossom Beach]] categorized into one page."
wikitext
text/x-wiki
[[Category:Miscellaneous information]]
All versions/game updates for [[Orange Blossom Beach (game)|Orange Blossom Beach]] categorized into one page.
9670299c190ec7d75f2bf1d2df5bc8e3d9a3b403
Template:Code
10
40
91
2022-08-27T19:36:07Z
Hatmanthehat
2
Created page with "{{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>"
wikitext
text/x-wiki
{{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
ec6759b67bec30b7f31c3a0feecdd2a4775ee0cf
Changing the environment
0
41
92
2022-08-28T04:30:50Z
Hatmanthehat
2
Created page with "[[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach using the console commands. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to some kind of weather. Changing..."
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach using the console commands. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to some kind of weather. Changing the season or time requires changing another value, which will be demonstrated below.
The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
3158445a00349211d4e01d9b33fe1f793b4e072d
93
92
2022-08-28T05:59:29Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach using the console commands. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it.
== Changing the time ==
The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
== Changing the season ==
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
== Changing the weather==
You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Changing the season or time requires changing another flag, which will be demonstrated below.
ee2d60464bf887eba94114506c214ee621ac35a9
94
93
2022-08-28T06:02:19Z
Hatmanthehat
2
/* Changing the season */
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach using the console commands. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it.
== Changing the time ==
The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
== Changing the season ==
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens.
== Changing the weather==
You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Changing the season or time requires changing another flag, which will be demonstrated below.
6095fc0bef867595021a9fbfb92397590c541295
95
94
2022-08-28T06:03:05Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it.
== Changing the time ==
The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
== Changing the season ==
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens.
== Changing the weather==
You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Changing the season or time requires changing another flag, which will be demonstrated below.
943b8ce47efb7cb023389bc3215ae4e5dc3e9ac7
96
95
2022-08-28T06:08:09Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it.
== Changing the time ==
The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
== Changing the season ==
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens.
== Changing the weather==
Lastly, the weather. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather.
Here’s the list of numbers that correspond to a type of weather:
{{code|0 - Sunny}}
{{code|1 - Cloudy}}
{{code|2 - Clear}}
73b66252d81461606068306919ea7b54747cf52f
97
96
2022-08-28T06:08:41Z
Hatmanthehat
2
/* Changing the weather */Test
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it.
== Changing the time ==
The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
== Changing the season ==
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens.
== Changing the weather==
Lastly, the weather. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather.
Here’s the list of numbers that correspond to a type of weather:
{{code|0 - Sunny\n1 - Cloudy}}
{{code|1 - Cloudy}}
{{code|2 - Clear}}
456f40d301c7983f0213dbfc7e59dc17834386ee
98
97
2022-08-28T06:13:15Z
Hatmanthehat
2
/* Changing the weather */
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it.
== Changing the time ==
The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
== Changing the season ==
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens.
== Changing the weather==
Lastly, the weather. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather.
Here’s the list of numbers that correspond to a type of weather:
{{code|0 - Sunny}}
{{code|1 - Cloudy}}
{{code|2 - Clear}}
73b66252d81461606068306919ea7b54747cf52f
99
98
2022-08-28T06:20:12Z
Hatmanthehat
2
/* Changing the time */
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it.
== Changing the time ==
The time system in Orange Blossom Beach mainly involves an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
== Changing the season ==
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens.
== Changing the weather==
Lastly, the weather. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather.
Here’s the list of numbers that correspond to a type of weather:
{{code|0 - Sunny}}
{{code|1 - Cloudy}}
{{code|2 - Clear}}
f1d5304c07e0a3818ed5ff0cc7c9d7442dbae791
100
99
2022-09-17T17:17:53Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it.
== Changing the time ==
The time system in Orange Blossom Beach mainly involves an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
== Changing the season ==
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens.
== Changing the weather==
Lastly, the weather. Weather can sometimes change to other types of weather. If you change it to rain, it could automatically change to drizzle weather, or a thunderstorm. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather.
Example: Running {{code|set Weather 3}} will make it rainy weather. 3 is the integer for rain, which is why it changes to that. Read below for which integers correspond to what.
=== Weather Integers ==
Here’s the list of integers that correspond to which weather should be set:
{{code|0 - Sunny}}
{{code|1 - Cloudy}}
{{code|2 - Clear}}
{{code|3 - Rain}}
{{code|4 - Thunderstorm}}
{{code|5 - Fog}}
{{code|6 - Snow}}
{{code|7 - Heavy Thunderstorm}}
{{code|8 - Drizzle}}
4f69b087f0e1e387481e4f7aefabff2bf098bc9e
101
100
2022-09-17T17:18:21Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it.
== Changing the time ==
The time system in Orange Blossom Beach mainly involves an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
== Changing the season ==
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens.
== Changing the weather==
Lastly, the weather. Weather can sometimes change to other types of weather. If you change it to rain, it could automatically change to drizzle weather, or a thunderstorm. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather.
Example: Running {{code|set Weather 3}} will make it rainy weather. 3 is the integer for rain, which is why it changes to that. Read below for which integers correspond to what.
=== Weather Integers ===
Here’s the list of integers that correspond to which weather should be set:
{{code|0 - Sunny}}
{{code|1 - Cloudy}}
{{code|2 - Clear}}
{{code|3 - Rain}}
{{code|4 - Thunderstorm}}
{{code|5 - Fog}}
{{code|6 - Snow}}
{{code|7 - Heavy Thunderstorm}}
{{code|8 - Drizzle}}
781b6eea83147229255bcf6e2f57d9364cfc7c65
102
101
2022-09-17T23:18:26Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. Note that this system was designed in mind to only be changed automatically; problems may occur.
== Changing the time ==
The time system in Orange Blossom Beach mainly involves an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
== Changing the season ==
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens.
== Changing the weather==
Lastly, the weather. Weather can sometimes change to other types of weather. If you change it to rain, it could automatically change to drizzle weather, or a thunderstorm. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather.
Example: Running {{code|set Weather 3}} will make it rainy weather. 3 is the integer for rain, which is why it changes to that. Read below for which integers correspond to what.
=== Weather Integers ===
Here’s the list of integers that correspond to which weather should be set:
{{code|0 - Sunny}}
{{code|1 - Cloudy}}
{{code|2 - Clear}}
{{code|3 - Rain}}
{{code|4 - Thunderstorm}}
{{code|5 - Fog}}
{{code|6 - Snow}}
{{code|7 - Heavy Thunderstorm}}
{{code|8 - Drizzle}}
06c282ee7c3a8e0ae57f6f8adb4dff3af8d6b1bc
File:Changing the environment demonstration.png
6
42
103
2022-10-02T19:51:40Z
Hatmanthehat
2
wikitext
text/x-wiki
Taken in Cramework Testing Initiative
69ed41f48e970f92cc92953f0994d2eda96a18d9
Changing the environment
0
41
104
102
2022-10-02T20:06:46Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Guides]]
This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!)
== Overview ==
Changing the environment in Orange Blossom Beach is easy to do with the built-in admin menu. It is possible to change the environment with only the console, but it's a bit complicated. This guide will show you how to change the time, season or weather, each with a simple method and an advanced method. It's highly recommended to do the simple method, because it's more streamlined and automated.
== Changing the time ==
=== Simple (Highly recommended) ===
[[File:Changing the environment demonstration.png|thumb|The Environment tab]]
Open the Admin Menu by pressing Q, then go to Settings. Click the Environment tab. This is where you'll find menus on changing the time of day.
We recommend you to only use the presets, because it's good enough for 99% of use cases. However, you can still use the manual option by inputting hours, minutes and seconds.
The rest of this is self-explanatory.
=== Advanced ===
The time system in Orange Blossom Beach mainly involves an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time.
As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes.
==== Drawbacks to the advanced method ====
The game decides when to change the weather through a flag called {{code|TimeTicksUntilWeatherChanges}}. When the {{code|TimeTicks}} flag reaches a value above this other flag, it will change the weather. Then the {{code|TimeTicksUntilWeatherChanges}} flag will set to a value higher than what it was initially. If you change the {{code|TimeTicks}} flag to a value much lower than this other flag, it will take a long time to change the weather.
If you want a workaround for this, just also change the {{code|TimeTicksUntilWeatherChanges}} flag to be a few hundred seconds higher than the {{code|TimeTicks}} flag when you change the time. This problem does not happen with the simple method, because the game automatically changes both flags.
== Changing the season ==
=== Advanced (no simple method for now) ===
If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game)
Here's a list of console commands that change the time to the start of certain months:
{{code|set TimeTicks}}
As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens.
== Changing the weather==
=== Simple (Highly recommended) ===
Open the Admin Menu by pressing Q, then go to Settings. Click the Environment tab. This is where you'll find menus on changing the weather.
Rest is self-explanatory.
=== Advanced ===
You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather.
Example: Running {{code|set Weather 3}} will make it rainy weather. 3 is the integer for rain, which is why it changes to that. Read below for which integers correspond to what.
==== Weather Integers ====
Here’s the list of integers that correspond to which weather should be set:
{{code|0 - Sunny}}
{{code|1 - Cloudy}}
{{code|2 - Clear}}
{{code|3 - Rain}}
{{code|4 - Thunderstorm}}
{{code|5 - Fog}}
{{code|6 - Snow}}
{{code|7 - Heavy Thunderstorm}}
{{code|8 - Drizzle}}
62524482520192072dc9e1cde7fb3aadf06ebea7
User:Vorlitix
2
43
105
2022-10-11T00:06:26Z
Vorlitix
3
i changed me
wikitext
text/x-wiki
hello
1 man of 3
your's truly the whale
f45b17cf6d16f67ef1d699442b8a7356aaff0b33
117
105
2022-10-11T04:44:01Z
Vorlitix
3
wikitext
text/x-wiki
hello
1 man of 3
signed your's truly the whale
94d7aded29626a1ada3658cee91d40d1d52f9358
118
117
2022-10-11T04:44:17Z
Vorlitix
3
wikitext
text/x-wiki
hello
1 man of 3
signed, your's truly, the whale
04013740fb117f97fd03b5faf739884eafc1a773
119
118
2022-10-11T04:47:11Z
Vorlitix
3
wikitext
text/x-wiki
hello
1 man of 3
signed, yours truly, the whale
b2c40379b2027b65ecf946214b3d5612109c6583
Orange Blossom Beach
0
33
106
84
2022-10-11T02:09:55Z
Vorlitix
3
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s.
It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation.
Orange Blossom Beach is also the origin point of infamous fast food chain, Tacoball. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area.
5133d939f70aa72cb8199bff32dfdebfa138dada
115
106
2022-10-11T03:23:26Z
Vorlitix
3
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s.
It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation.
Orange Blossom Beach is also the origin point of infamous fast food chain, [[Tacoball]]. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area.
860b863af9a25270d784e9b04850bf5745fc0909
Taco Ball
0
44
107
2022-10-11T02:14:59Z
Vorlitix
3
Created page with "Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Bell (1929-2006) in the city of [[Orange Blossom Beach]]"
wikitext
text/x-wiki
Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Bell (1929-2006) in the city of [[Orange Blossom Beach]]
f48db41920826c8f8e115bf0c9390979762c60bc
108
107
2022-10-11T03:14:33Z
Vorlitix
3
the entirety
wikitext
text/x-wiki
Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
== History ==
Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since.
== Menu ==
The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Tacoball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Tacoball taco included with mushing as a side.
2b29debaa141c8133b4164cec15f675f3fb4361e
110
108
2022-10-11T03:19:00Z
Vorlitix
3
wikitext
text/x-wiki
Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]]
== History ==
Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since.
== Menu ==
The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Tacoball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Tacoball taco included with mushing as a side.
4e3ed0b154739099511a8e7d2b6345944d5517c1
111
110
2022-10-11T03:21:12Z
Vorlitix
3
wikitext
text/x-wiki
Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]]
== History ==
Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since.
== Menu ==
The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Tacoball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Tacoball taco included with mushing as a side.
[[Category: Lore]] [[Category: Map Locations]]
6daa9773b43e2073b49810dd628110d1ca57dc71
112
111
2022-10-11T03:21:32Z
Vorlitix
3
wikitext
text/x-wiki
Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]]
== History ==
Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since.
== Menu ==
The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Tacoball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Tacoball taco included with mushing as a side.
[[Category: Lore]] [[Category: Map_Locations]]
e8a4d2f0e2b47d3d183d3610093ed787e32e047c
113
112
2022-10-11T03:22:14Z
Vorlitix
3
wikitext
text/x-wiki
|Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]]
== History ==
Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since.
== Menu ==
The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Tacoball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Tacoball taco included with mushing as a side.
[[Category: Lore]] [[Category:Map_Locations]]
c64f53b0eff067c9cd59f87a672d2a796f99fd55
114
113
2022-10-11T03:22:51Z
Vorlitix
3
wikitext
text/x-wiki
|Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]]
== History ==
Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since.
== Menu ==
The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Tacoball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Tacoball taco included with mushing as a side.
[[Category: Lore]] [[Category:Map locations]]
82aa7ec3e563b8022abd8296d4124d3a888bff0e
116
114
2022-10-11T03:27:21Z
Vorlitix
3
wikitext
text/x-wiki
Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]]
== History ==
Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since.
== Menu ==
The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Tacoball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Tacoball taco included with mushing as a side.
[[Category: Lore]] [[Category:Map locations]]
b412eac1b49610302f454d28a0a3a6eec0cd3c6e
140
116
2022-10-11T15:36:49Z
Vorlitix
3
wikitext
text/x-wiki
Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]]
== History ==
Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since.
== Menu ==
The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Tacoball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and more ingredients to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Tacoball taco included with mushing as a side.
[[Category: Lore]] [[Category:Map locations]]
707304a5ac2b971f1b33abdc9bb78cfcb35c35a1
141
140
2022-10-11T15:39:24Z
Vorlitix
3
wikitext
text/x-wiki
Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]]
== History ==
Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 8 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since.
== Menu ==
The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Tacoball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and more ingredients to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Tacoball taco included with mushing as a side.
[[Category: Lore]] [[Category:Map locations]]
c308937b41e58ae5a77616639a2146cc8f2e3cd4
File:Tacoball as of December 10th, 2008.png
6
45
109
2022-10-11T03:16:06Z
Vorlitix
3
wikitext
text/x-wiki
The original Tacoball resturant.
b899a08921f93b0fa8283ec88339ed90c29a4b89
File:Neighborhood RP Thumbnail 10-17-2021.jpg
6
46
120
2022-10-11T06:21:52Z
Vorlitix
3
wikitext
text/x-wiki
The thumbnail of Neighborhood RP on 10/17/2021
44eb8050deca4c0393da2256e5e45c4cbca2aefc
Orange Blossom Beach (game)
0
26
121
81
2022-10-11T06:49:16Z
Vorlitix
3
wikitext
text/x-wiki
[[Category:Miscellaneous_information]]
[[Category:Lore]]
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009, set in the state of Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
''For more information, see [[Neighborhood RP]]''
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
{{stub}}
9664e085ef029dda5c5dd394757cf4db7ed5228b
Neighborhood RP
0
47
122
2022-10-11T06:53:53Z
Vorlitix
3
i made the entire page
wikitext
text/x-wiki
[[File:Neighborhood RP Thumbnail 10-17-2021.jpg|thumb|The 3rd Gen Neighborhood RP thumbnail.]]
Neighborhood RP was the spiritual predecessor for the groundworks of [[Orange Blossom Beach (game)|Orange Blossom Beach]] and [[Alpha 0.0.1]]. The game was originally created by [https://www.roblox.com/users/86121841/profile Hattozo] on December 25, 2020 but was later re-uploaded on February 6, 2021 after an incident which made the game content deleted by the Roblox moderation team. The game was discontinued on March 30, 2022 and is now no longer playable.
== Development ==
Neighborhood RP was worked on from 12/25/2020 to 3/30/2022. It went through several map revamps and game changes, which are both separated between 3 eras. Generation 1, 2, and 3. The game itself was originally preceded by a friends only RP game which was created around early 2019, in which that was a replacement for a series that lasted from 2016-2018 that was also a private game for friends only.
=== Generation 1 ===
Generation 1 of Neighborhood RP, which was worked on during December of 2020. It was a very flat map which was absent of any terrain whatsoever but was a still expanding map. It was originally made for a different game when dominickdoesstuff created the map and brought up the idea for said map, but it ended up being published as Neighborhood RP. All of the scripts were still the same from the previous game made in 2019, using mainly mesh tools and these tools are still prevalent as of [[Alpha 0.2.5]] of OBB such as the molotov. Later on into the maps life cycle, the map eventually began being filled up with more buildings. Due to the small but filled map design, it was considered as the best Neighborhood RP map.
=== Generation 2 ===
Generation 2 of Neighborhood RP was almost the same game, in which this generation was worked on during early 2021 and parts of mid 2021. The map was changed and instead opted for a forest based map and the same house but was heavily scrutinized and criticized because of its dull and depressing map design. The Neighborhood RP house was instead off the grid this time and there were less buildings than 2.5. It still primarily had the same tools and mentioned in generation 1, but had a few extra improvements. Much didn't change but the new depressing map and the game still mostly remained the same when it came to scripting.
=== Generation 3 ===
Generation 3 was the last and final era of Neighborhood RP. It was worked on during late 2021 after not being picked up for months. It again changed the map to a more expanded but wasteland inspired map including an abandoned town. The map was a step up from the Gen 2 map, but still felt very empty due to its larger size and basically being a tech demo for the game. This era was basically the foundations for OBB as it would later be rebranded as OBB marking the beginnings of Orange Blossom Beach.
''For the next version, see OBB [[Alpha 0.0.1]]''
1c5610f417e09e8b6f5d2caf9aca099b48944cb6
132
122
2022-10-11T15:22:24Z
Vorlitix
3
wikitext
text/x-wiki
[[File:Neighborhood RP Thumbnail 10-17-2021.jpg|thumb|The 3rd Gen Neighborhood RP thumbnail.]]
Neighborhood RP was the spiritual predecessor for the groundworks of [[Orange Blossom Beach (game)|Orange Blossom Beach]] and [[Alpha 0.0.1]]. The game was originally created by [https://www.roblox.com/users/86121841/profile Hattozo] on December 25, 2020 but was later re-uploaded on February 6, 2021 after an incident which made the game content deleted by the Roblox moderation team. The game was discontinued on March 30, 2022 and is now no longer playable.
== Development ==
Neighborhood RP was worked on from 12/25/2020 to 3/30/2022. It went through several map revamps and game changes, which are both separated between 3 eras. Generation 1, 2, and 3. The game itself was originally preceded by a friends only RP game which was created around early 2019, in which that was a replacement for a series that lasted from 2016-2018 that was also a private game for friends only.
=== Generation 1 ===
Generation 1 of Neighborhood RP, which was worked on during December of 2020. It was a very flat map which was absent of any terrain whatsoever but was a still expanding map. It was originally made for a different game when dominickdoesstuff created the map and brought up the idea for said map, but it ended up being published as Neighborhood RP. All of the scripts were still the same from the previous game made in 2019, using mainly mesh tools and these tools are still prevalent as of [[Alpha 0.2.5]] of OBB such as the molotov. Later on into the maps life cycle, the map eventually began being filled up with more buildings. Due to the small but filled map design, it was considered as the best Neighborhood RP map.
=== Generation 2 ===
Generation 2 of Neighborhood RP was almost the same game, in which this generation was worked on during early 2021 and parts of mid 2021. The map was changed and instead opted for a forest based map and the same house but was heavily scrutinized and criticized because of its dull and depressing map design. The Neighborhood RP house was instead off the grid this time and there were less buildings than 2.5. It still primarily had the same tools and mentioned in generation 1, but had a few extra improvements. Much didn't change but the new depressing map and the game still mostly remained the same when it came to scripting.
=== Generation 3 ===
Generation 3 was the last and final era of Neighborhood RP. It was worked on during late 2021 after not being picked up for months. It again changed the map to a more expanded but wasteland inspired map including an abandoned town. The map was a step up from the Gen 2 map, but still felt very empty due to its larger size and basically being a tech demo for the game. This era was basically the foundations for OBB as it would later be rebranded as OBB marking the beginnings of Orange Blossom Beach.
''For the next version, see OBB [[Alpha 0.0.1]]''
[[Category:Versions]]
788b4df322b622a9418c9ef594d6f03861b48a39
139
132
2022-10-11T15:35:18Z
Vorlitix
3
wikitext
text/x-wiki
[[File:Neighborhood RP Thumbnail 10-17-2021.jpg|thumb|The 3rd Gen Neighborhood RP thumbnail.]]
Neighborhood RP was the spiritual predecessor for the groundworks of [[Orange Blossom Beach (game)|Orange Blossom Beach]] and [[Alpha 0.0.1]]. The game was originally created by [https://www.roblox.com/users/86121841/profile Hattozo] on December 25, 2020 but was later re-uploaded on February 6, 2021 after an incident which made the game content deleted by the Roblox moderation team. The game was discontinued on March 30, 2022 and is now no longer playable.
== Development ==
Neighborhood RP was worked on from December 25, 2020 to March 30, 2022. It went through several map revamps and game changes, which are both separated between 3 eras. Generation 1, 2, and 3. The game itself was originally preceded by a friends only RP game which was created around early 2019, in which that was a replacement for a series that lasted from 2016-2018 that was also a private game for friends only.
=== Generation 1 ===
Generation 1 of Neighborhood RP, which was worked on during December of 2020. It was a very flat map which was absent of any terrain whatsoever but was a still expanding map. It was originally made for a different game when dominickdoesstuff created the map and brought up the idea for said map, but it ended up being published as Neighborhood RP. All of the scripts were still the same from the previous game made in 2019, using mainly mesh tools and these tools are still prevalent as of [[Alpha 0.2.5]] of OBB such as the molotov. Later on into the maps life cycle, the map eventually began being filled up with more buildings. Due to the small but filled map design, it was considered as the best Neighborhood RP map.
=== Generation 2 ===
Generation 2 of Neighborhood RP was almost the same game, in which this generation was worked on during early 2021 and parts of mid 2021. The map was changed and instead opted for a forest based map and the same house but was heavily scrutinized and criticized because of its dull and depressing map design. The Neighborhood RP house was instead off the grid this time and there were less buildings than the previous map. It still primarily had the same tools and mentioned in generation 1, but had a few extra improvements. Much didn't change but the new depressing map and the game still mostly remained the same when it came to scripting.
=== Generation 3 ===
Generation 3 was the last and final era of Neighborhood RP. It was worked on during late 2021 after not being picked up for months. It again changed the map to a more expanded but wasteland inspired map including an abandoned town. The map was a step up from the Gen 2 map, but still felt very empty due to its larger size and basically being a tech demo for the game. This era was basically the foundations for OBB as it would later be rebranded as OBB marking the beginnings of Orange Blossom Beach.
''For the next version, see OBB [[Alpha 0.0.1]]''
[[Category:Versions]]
566cdb32e03fff635431651d438c5f0dec264d94
146
139
2022-10-11T15:49:54Z
Vorlitix
3
wikitext
text/x-wiki
[[File:Neighborhood RP Thumbnail 10-17-2021.jpg|thumb|The 3rd Gen Neighborhood RP thumbnail.]]
Neighborhood RP was the spiritual predecessor for the groundworks of [[Orange Blossom Beach (game)|Orange Blossom Beach]] and [[Alpha 0.0.1]]. The game was originally created by [https://www.roblox.com/users/86121841/profile Hattozo] on December 5, 2020 but was later re-uploaded on February 6, 2021 after an incident which made the game content deleted by the Roblox moderation team. The game was discontinued on March 30, 2022 and is now no longer playable.
== Development ==
Neighborhood RP was worked on from December 5, 2020 to March 30, 2022. It went through several map revamps and game changes, which are both separated between 3 eras. Generation 1, 2, and 3. The game itself was originally preceded by a friends only RP game which was created around early 2019, in which that was a replacement for a series that lasted from 2016-2018 that was also a private game for friends only.
=== Generation 1 ===
Generation 1 of Neighborhood RP, which was worked on during December of 2020. It was a very flat map which was absent of any terrain whatsoever but was a still expanding map. It was originally made for a different game when dominickdoesstuff created the map and brought up the idea for said map, but it ended up being published as Neighborhood RP. All of the scripts were still the same from the previous game made in 2019, using mainly mesh tools and these tools are still prevalent as of [[Alpha 0.2.5]] of OBB such as the molotov. Later on into the maps life cycle, the map eventually began being filled up with more buildings. Due to the small but filled map design, it was considered as the best Neighborhood RP map.
=== Generation 2 ===
Generation 2 of Neighborhood RP was almost the same game, in which this generation was worked on during early 2021 and parts of mid 2021. The map was changed and instead opted for a forest based map and the same house but was heavily scrutinized and criticized because of its dull and depressing map design. The Neighborhood RP house was instead off the grid this time and there were less buildings than the previous map. It still primarily had the same tools and mentioned in generation 1, but had a few extra improvements. Much didn't change but the new depressing map and the game still mostly remained the same when it came to scripting.
=== Generation 3 ===
Generation 3 was the last and final era of Neighborhood RP. It was worked on during late 2021 after not being picked up for months. It again changed the map to a more expanded but wasteland inspired map including an abandoned town. The map was a step up from the Gen 2 map, but still felt very empty due to its larger size and basically being a tech demo for the game. This era was basically the foundations for OBB as it would later be rebranded as OBB marking the beginnings of Orange Blossom Beach.
''For the next version, see OBB [[Alpha 0.0.1]]''
[[Category:Versions]]
95c66032daa49fa3026c8c9f21b11a6bfe07842a
Alpha 0.0.1
0
48
123
2022-10-11T06:59:20Z
Vorlitix
3
Created page with "OBB Alpha 0.0.1 is the first some unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. It followed after [[Neighborhood RP]] == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings..."
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first some unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. It followed after [[Neighborhood RP]]
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings.
It lacked the addition of the Neighborhood RP map, because Neighborhood RP was still in development at this time. The house wasn't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP.
For the previous version, see Neighborhood RP. For the next version, see 0.0.2
cc843ba1beaca41b0d2930454a77cfba6b6a2e24
124
123
2022-10-11T15:08:04Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first some unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. It followed after [[Neighborhood RP]]
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings.
It lacked the addition of the Neighborhood RP map, because Neighborhood RP was still in development at this time. The house wasn't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP.
For the previous version, see Neighborhood RP.
For the next version, see 0.0.2
[[Category:Versions]]
643f8e6726e3f230fe4080f9577e009342b3b6eb
125
124
2022-10-11T15:15:37Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first some unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. It followed after [[Neighborhood RP]]
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project.
''For the previous version, see [[Neighborhood RP]]
For the next version, see [[0.0.2]]''
[[Category:Versions]]
004f6c5ae1933dbb60d5722b1848c758f54e09c9
126
125
2022-10-11T15:16:17Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. It followed after [[Neighborhood RP]]
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project.
''For the previous version, see [[Neighborhood RP]]
For the next version, see [[0.0.2]]''
[[Category:Versions]]
82fec3e6ec40e6615a575232f85bc67abc3ffc8c
127
126
2022-10-11T15:17:15Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach.
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator.
''For the previous version, see [[Neighborhood RP]]
For the next version, see [[0.0.2]]''
[[Category:Versions]]
15f0dfce10d97953b404b60b4b438fddb40c9b44
128
127
2022-10-11T15:19:32Z
Vorlitix
3
/* Development */
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach.
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator.
''For the previous version, see [[Neighborhood RP]]
For the next version, see [[Alpha 0.0.2|0.0.2]]''
''
''[[Category:Versions]]''
7d6b5702e55ef1b59466b0ac796cf53597412929
129
128
2022-10-11T15:21:06Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach.
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator.
''For the previous version, see [[Neighborhood RP]]
For the next version, see [[Alpha 0.0.2|0.0.2]]
''[[Category:Versions]]''
e455fd75e9bfa33efb0fac4951b69d49186f4923
130
129
2022-10-11T15:21:32Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach.
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator.
''For the previous version, see [[Neighborhood RP]]
For the next version, see [[Alpha 0.0.2|0.0.2]]
''[[Category:Versions]]''
7f859e23410dbb86c0c52e38da6b276f0969a2c0
131
130
2022-10-11T15:21:54Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach.
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator.
''For the previous version, see [[Neighborhood RP]]
For the next version, see [[Alpha 0.0.2|0.0.2]]
''[[Category:Versions]]''
e455fd75e9bfa33efb0fac4951b69d49186f4923
133
131
2022-10-11T15:23:28Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach.
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator.
''For the previous version, see [[Neighborhood RP]]
For the next version, see [[Alpha 0.0.2|0.0.2]]"
[[Category:Versions]]
91e9b989e958141b6d822f562dd44cd4a4708620
134
133
2022-10-11T15:23:51Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach.
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator.
''For the previous version, see [[Neighborhood RP]]
For the next version, see [[Alpha 0.0.2|0.0.2]]
[[Category:Versions]]
ffbaa49339d8749299e8950deb2758a3b27f8551
135
134
2022-10-11T15:24:04Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach.
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2|0.0.2]]''
[[Category:Versions]]
42a082ea47fa7eda206420c9ce5fc8c215151474
136
135
2022-10-11T15:25:22Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach.
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2]]''
[[Category:Versions]]
5e421fcb3c3c6145bd0527d2cfb4a7e4de5362f3
142
136
2022-10-11T15:43:39Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created around late 2021, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach.
== Development ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2]]''
[[Category:Versions]]
c7d40c32a384e62a1b6da996252fe71e1377c09a
Alpha 0.0.2
0
49
137
2022-10-11T15:25:53Z
Vorlitix
3
Created page with "OBB Alpha 0.0.2 is the second unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR. 0.0.2 was still a basic map from 0.0.1 but included more additions and various buildings. == Development == Development is unknown. ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]''"
wikitext
text/x-wiki
OBB Alpha 0.0.2 is the second unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR. 0.0.2 was still a basic map from 0.0.1 but included more additions and various buildings.
== Development ==
Development is unknown.
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
ca3430ad556e2b2d96a8f1d4083208686ee9e062
138
137
2022-10-11T15:26:29Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.2 is the second unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR. 0.0.2 was still a basic map from 0.0.1 but included more additions and various buildings.
== Development ==
Development is unknown.
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
51df1f38d92168a2becfa8faf501356ca11ecce2
145
138
2022-10-11T15:48:17Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.2 is the second unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created roughly around December, 2021 or January, 2022. 0.0.2 was still a basic map from 0.0.1 but included more additions and various buildings.
== Development ==
Development is unknown but includes various small map improvements.
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
5eef937807d1d28a3e757a8b421f2156d30a775c
Alpha 0.0.3
0
50
143
2022-10-11T15:46:17Z
Vorlitix
3
Created page with "OBB Alpha 0.0.1 is the third unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created around February/March, 2022 and was the final revision for the original OBB map. == Development == Not much is known about development, but the map opted for a terrain-based design that would stick with the game. It also was the map that was uploaded in Alpha 0.0.4 as that was when the game went public and replaced [[Neighborhood RP]]. A few buildin..."
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the third unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created around February/March, 2022 and was the final revision for the original OBB map.
== Development ==
Not much is known about development, but the map opted for a terrain-based design that would stick with the game. It also was the map that was uploaded in Alpha 0.0.4 as that was when the game went public and replaced [[Neighborhood RP]]. A few buildings from the final Neighborhood RP map were added but as far off sections and were never revisited. Most of these buildings were later revamped in future versions.
''For the previous version, see [[Alpha 0.0.2]]''
''For the next version, see [[Alpha 0.0.4]]''
dfb3d8be38780978927047530ef204f5c82dcd97
144
143
2022-10-11T15:46:53Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the third unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created around February/March, 2022 and was the final revision for the original OBB map.
== Development ==
Not much is known about development, but the map opted for a terrain-based design that would stick with the game. It also was the map that was uploaded in Alpha 0.0.4 as that was when the game went public and replaced [[Neighborhood RP]]. A few buildings from the final Neighborhood RP map were added but as far off sections and were never revisited. Most of these buildings were later revamped in future versions.
''For the previous version, see [[Alpha 0.0.2]]''
''For the next version, see [[Alpha 0.0.4]]''
[[Category:Versions]]
f1b5e35ef474e9dc130d8be939d8aad5dbdb2a9c
Alpha 0.0.4
0
51
147
2022-10-11T15:57:33Z
Vorlitix
3
Created page with "OBB Alpha 0.0.2 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022. Alpha 0.0.4 was the first version with actual scripting and the beginning of the dev team. It was uploaded and rebranded on the original [[Neighborhood RP]] place as Orange Blossom Beach RP. Alpha 0.0.4 was also the first documented version of OBB. == Development == Map improvements were made, however not many changes were made. These..."
wikitext
text/x-wiki
OBB Alpha 0.0.2 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022. Alpha 0.0.4 was the first version with actual scripting and the beginning of the dev team. It was uploaded and rebranded on the original [[Neighborhood RP]] place as Orange Blossom Beach RP. Alpha 0.0.4 was also the first documented version of OBB.
== Development ==
Map improvements were made, however not many changes were made.
These changes include:
# Fixed tools that rely on the detection of other players
# Volume adjusted from 0.5 to 1
# Third person shift lock for guns
# A new topbar.
''For the previous version, see [[Alpha 0.0.3]]''
''For the next version, see [[Alpha 0.0.5]]''
[[Category:Versions]]
3ff69f86eb54ba21def3dedc48fe684154c424ee
149
147
2022-10-11T16:01:45Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.4 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022. Alpha 0.0.4 was the first version with actual scripting and the beginning of the dev team. It was uploaded and rebranded on the original [[Neighborhood RP]] place as Orange Blossom Beach RP. Alpha 0.0.4 was also the first documented version of OBB.
[[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]]
== Development ==
Map improvements were made, however not many changes were made.
These changes include:
# Fixed tools that rely on the detection of other players
# Volume adjusted from 0.5 to 1
# Third person shift lock for guns
# A new topbar.
''For the previous version, see [[Alpha 0.0.3]]''
''For the next version, see [[Alpha 0.0.5]]''
[[Category:Versions]]
298ee196733976d21857ea16f87779f6e694be0e
150
149
2022-10-11T16:13:31Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.4 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022. Alpha 0.0.4 was the first version with actual scripting and the beginning of the dev team. It was uploaded and rebranded on the original [[Neighborhood RP]] place as Orange Blossom Beach RP. Alpha 0.0.4 was also the first documented version of OBB.
[[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]]
== Development and Changelog ==
Map improvements were made, however not many changes were made.
These changes include:
# Fixed tools that rely on the detection of other players
# Volume adjusted from 0.5 to 1
# Third person shift lock for guns
# A new topbar.
''For the previous version, see [[Alpha 0.0.3]]''
''For the next version, see [[Alpha 0.0.5]]''
[[Category:Versions]]
64b306d37ebdb8f731788235d4dd330039992736
File:Alpha 004 Screenshot.png
6
52
148
2022-10-11T15:59:50Z
Vorlitix
3
wikitext
text/x-wiki
Alpha Screenshot
5b0d33f2d8291fe1b9cfe0c442dc935e3e0dbb5f
Alpha 0.0.5
0
53
151
2022-10-11T16:20:30Z
Vorlitix
3
Created page with "OBB Alpha 0.0.5 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update. == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 EST to 10:33 EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and..."
wikitext
text/x-wiki
OBB Alpha 0.0.5 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.
== Development and Changelog ==
Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 EST to 10:33 EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds.
Changelog:
# Sound fixes
# Added a teleporter than teleports you to a randomized game in [[Central Red - US]]
''For the previous version, see [[Alpha 0.0.4]]''
''For the next version, see [[Alpha 0.0.6]]''
[[Category:Versions]]
524d0c03bf262c8aa3c4f320908543c3f1b75371
File:OBB Alpha 005 Screenshot.png
6
54
152
2022-10-11T16:22:12Z
Vorlitix
3
wikitext
text/x-wiki
Alpha Screenshot
5b0d33f2d8291fe1b9cfe0c442dc935e3e0dbb5f
Alpha 0.0.5
0
53
153
151
2022-10-11T16:22:58Z
Vorlitix
3
wikitext
text/x-wiki
[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.]]
OBB Alpha 0.0.5 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.
== Development and Changelog ==
Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 EST to 10:33 EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds.
Changelog:
# Sound fixes
# Added a teleporter than teleports you to a randomized game in [[Central Red - US]]
''For the previous version, see [[Alpha 0.0.4]]''
''For the next version, see [[Alpha 0.0.6]]''
[[Category:Versions]]
c42426d6e2048fc847aca5cf340fa1a8a1d53cac
154
153
2022-10-11T16:23:31Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.5 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]]
== Development and Changelog ==
Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 EST to 10:33 EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds.
Changelog:
# Sound fixes
# Added a teleporter than teleports you to a randomized game in [[Central Red - US]]
''For the previous version, see [[Alpha 0.0.4]]''
''For the next version, see [[Alpha 0.0.6]]''
[[Category:Versions]]
1ea5e6a579961a96c780e3cef5f836e66dab676f
155
154
2022-10-11T16:24:16Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.5 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]]
== Development and Changelog ==
Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds.
Changelog:
# Sound fixes
# Added a teleporter than teleports you to a randomized game in [[Central Red - US]]
''For the previous version, see [[Alpha 0.0.4]]''
''For the next version, see [[Alpha 0.0.6]]''
[[Category:Versions]]
ae1cf99f93280d52f5a8c85aae519ffaf717f5dc
168
155
2022-10-11T17:01:47Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.5 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]]
== Development and Changelog ==
Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds.
Changelog:
# Sound fixes
# Added a teleporter than teleports you to a randomized game in [[Central Red - US]]
''For the previous version, see [[Alpha 0.0.4]]''
''For the next version, see [[Alpha 0.0.6]]''
[[Category:Versions]]
9d2d2f07ecbd39add34389b87a53d78344f31834
183
168
2022-10-11T17:14:06Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.5 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]]
== Development and Changelog ==
Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds.
Changelog:
* Sound fixes
* Added a teleporter than teleports you to a randomized game in [[Central Red - US]]
''For the previous version, see [[Alpha 0.0.4]]''
''For the next version, see [[Alpha 0.0.6]]''
[[Category:Versions]]
d5dd853bc933760a2580252c00828a3c924ff666
185
183
2022-10-11T17:15:05Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.5 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]]
== Development and Changelog ==
Alpha 0.0.5 didn't add much to OBB and development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds.
Changelog:
* Sound fixes
* Added a teleporter than teleports you to a randomized game in [[Central Red - US]]
''For the previous version, see [[Alpha 0.0.4]]''
''For the next version, see [[Alpha 0.0.6]]''
[[Category:Versions]]
30d2bdfb8011464143bb4ad8779c39903cf5b673
195
185
2022-10-11T18:57:55Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.5 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]]
== Development and Changelog ==
Alpha 0.0.5 didn't add much to OBB and development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds.
Changelog:
* Sound fixes
* Added a teleporter in [[Central Red - US]] than teleports you to a randomized game
''For the previous version, see [[Alpha 0.0.4]]''
''For the next version, see [[Alpha 0.0.6]]''
[[Category:Versions]]
4b092453bd3132dee4b69e2e79fd6d0d84c4a8b5
Alpha 0.0.1
0
48
156
142
2022-10-11T16:52:51Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.2]] and [[Alpha 0.0.3]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]]
== Development and Changelog ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions.
Changelog:
# Fixed tools that relied on touching players.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2]]''
[[Category:Versions]]
e271109137e7cdfdae4c6f98fda464a68b740b85
160
156
2022-10-11T16:56:58Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.2]] and [[Alpha 0.0.3]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]]
== Development and Changelog ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions.
=== Changelog: ===
# Fixed tools that relied on touching players.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2]]''
[[Category:Versions]]
b7bb6d072e7a41277e9cf3fe19f8a004800a6ba7
170
160
2022-10-11T17:02:43Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.2]] and [[Alpha 0.0.3]].
== Development and Changelog ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions.
=== Changelog: ===
# Fixed tools that relied on touching players.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2]]''
[[Category:Versions]]
d2cc237b7d166ce20af5188b9a541211173081bc
172
170
2022-10-11T17:03:29Z
Hatmanthehat
2
Bullets.
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.2]] and [[Alpha 0.0.3]].
== Development and Changelog ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions.
=== Changelog: ===
* Fixed tools that relied on touching players.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2]]''
[[Category:Versions]]
5a9aa64247190e2e563b7f297a432be57a647910
175
172
2022-10-11T17:06:27Z
Hatmanthehat
2
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022, along with [[Alpha 0.0.2]] and [[Alpha 0.0.3]].
== Development and Changelog ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions.
=== Changelog: ===
* Fixed tools that relied on touching players.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2]]''
[[Category:Versions]]
d9288bac669a20edc75dae5163004be17572d23d
178
175
2022-10-11T17:12:43Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:16 PM, EST a few minutes before [[Alpha 0.0.2]] and a few hours before [[Alpha 0.0.3]].
== Development and Changelog ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions.
=== Changelog: ===
* Fixed tools that relied on touching players.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2]]''
[[Category:Versions]]
8fc3266816c3b14836c485dd59f53803e283e254
Alpha 0.0.2
0
49
157
145
2022-10-11T16:54:13Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.2 is the second released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.3]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]]
== Development ==
Not much changed but the game becoming a pitch louder.
Changelog:
# Soundgroup is now 1 and not 0.5
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
cb6fdaf86fbdfaf97b1430234e03f94aad14a4f9
159
157
2022-10-11T16:56:42Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.2 is the second released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.3]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]]
== Development ==
Not much changed but the game becoming a pitch louder.
=== Changelog: ===
# Soundgroup is now 1 and not 0.5
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
50ee90613b03152ed8903546547538facd4d10d7
166
159
2022-10-11T17:01:06Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.2 is the second released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.3]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]]
== Development and Changelog ==
Not much changed but the game becoming a pitch louder.
=== Changelog: ===
# Soundgroup's volume is now 1 and not 0.5
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
520da9ed0ddd88ea3aa62b88845deb5cdf1bdd80
171
166
2022-10-11T17:02:57Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.2 is the second released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.3]].
== Development and Changelog ==
Not much changed but the game becoming a pitch louder.
=== Changelog: ===
# Soundgroup's volume is now 1 and not 0.5
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
4daa75022f05476f8d71e859615a5e9b480f2fcc
174
171
2022-10-11T17:05:41Z
Hatmanthehat
2
wikitext
text/x-wiki
OBB Alpha 0.0.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022, along with [[Alpha 0.0.1]] and [[Alpha 0.0.3]].
== Development and Changelog ==
Not much changed but the game becoming a pitch louder.
=== Changelog: ===
* SoundGroup's volume is now 1 and not 0.5
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
8e2aa9b6e5d9ce3f5aa4cc4c7caaab1ce269f3cf
177
174
2022-10-11T17:12:00Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:46 PM, EST a few minutes after [[Alpha 0.0.1]] and a few hours before [[Alpha 0.0.3]].
== Development and Changelog ==
Not much changed but the game becoming a pitch louder.
=== Changelog: ===
* SoundGroup's volume is now 1 and not 0.5
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
79a0bfb79e2dfbe85e8587f5663640cde0518487
179
177
2022-10-11T17:12:58Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:46 PM, EST a few minutes after [[Alpha 0.0.1]] and a few hours before [[Alpha 0.0.3]].
== Development and Changelog ==
Not much changed but the game becoming a pitch louder.
=== Changelog: ===
# SoundGroup's volume is now 1 and not 0.5
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
e024cdb8367823286d0af688012670d7b255ed96
180
179
2022-10-11T17:13:19Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:46 PM, EST a few minutes after [[Alpha 0.0.1]] and a few hours before [[Alpha 0.0.3]].
== Development and Changelog ==
Not much changed but the game becoming a pitch louder.
=== Changelog: ===
* SoundGroup's volume is now 1 and not 0.5
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
0f2d94ecb2e80bccb2aa14f3fcacfa8b0abd7cb4
Alpha 0.0.3
0
50
158
144
2022-10-11T16:56:24Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.2]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]]
== Development ==
Not much changed like before, but the third person view for guns were improved.
=== Changelog: ===
# Shift Lock was now third person for guns.
''For the previous version, see [[Alpha 0.0.2]]''
''For the next version, see [[Alpha 0.0.4]]''
[[Category:Versions]]
2130c08edc8deedc19b03767b68d71b1bb9635df
165
158
2022-10-11T17:00:33Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.2]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]]
== Development and Changelog ==
Not much changed like before, but the third person view for guns were improved.
=== Changelog: ===
# Shift Lock was now third person for guns.
''For the previous version, see [[Alpha 0.0.2]]''
''For the next version, see [[Alpha 0.0.4]]''
[[Category:Versions]]
4de697212b85d9b3fdb5f7fd6c72d702db2f00ec
169
165
2022-10-11T17:02:28Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.2]].
== Development and Changelog ==
Not much changed like before, but the third person view for guns were improved.
=== Changelog: ===
# Shift Lock was now third person for guns.
''For the previous version, see [[Alpha 0.0.2]]''
''For the next version, see [[Alpha 0.0.4]]''
[[Category:Versions]]
c23c2b1961f206ee4847359f7396c535cd0dc503
176
169
2022-10-11T17:08:39Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 8:34 PM EST, almost the exact same time as [[Alpha 0.0.1]] and [[Alpha 0.0.2]].
There was a short playtest of the game a few hours before the release of [[Alpha 0.0.4]] when the game was going through the process of being imported on top of [[Neighborhood RP]]. The playtest was also tested on [[Alpha 0.0.1]] and [[Alpha 0.0.2]] before Alpha 0.0.3
== Development and Changelog ==
Not much changed like before, but the third person view for guns were improved.
=== Changelog: ===
# Shift Lock was now third person for guns.
''For the previous version, see [[Alpha 0.0.2]]''
''For the next version, see [[Alpha 0.0.4]]''
[[Category:Versions]]
10d567a01174fbded53fd6bc8460149745244478
181
176
2022-10-11T17:13:32Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 8:34 PM EST, almost the exact same time as [[Alpha 0.0.1]] and [[Alpha 0.0.2]].
There was a short playtest of the game a few hours before the release of [[Alpha 0.0.4]] when the game was going through the process of being imported on top of [[Neighborhood RP]]. The playtest was also tested on [[Alpha 0.0.1]] and [[Alpha 0.0.2]] before Alpha 0.0.3
== Development and Changelog ==
Not much changed like before, but the third person view for guns were improved.
=== Changelog: ===
* Shift Lock was now third person for guns.
''For the previous version, see [[Alpha 0.0.2]]''
''For the next version, see [[Alpha 0.0.4]]''
[[Category:Versions]]
938d261d67bf4e8b7cc7647ef33e89bc40d98823
186
181
2022-10-11T17:55:35Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 8:34 PM EST, almost the exact same time as [[Alpha 0.0.1]] and [[Alpha 0.0.2]].
There was a short playtest of the game a few hours before the release of [[Alpha 0.0.4]] when the game was going through the process of being imported on top of [[Neighborhood RP]]. The playtest was also tested on [[Alpha 0.0.1]] and [[Alpha 0.0.2]] before Alpha 0.0.3
== Development and Changelog ==
Not much changed like before, but the third person view for guns were improved.
=== Changelog: ===
* Shift Lock is now third person for guns.
''For the previous version, see [[Alpha 0.0.2]]''
''For the next version, see [[Alpha 0.0.4]]''
[[Category:Versions]]
2164a7ae597ad3d0efab8f203ceee5b1428f99a9
Taco Ball
0
44
161
141
2022-10-11T16:59:12Z
Hatmanthehat
2
Hatmanthehat moved page [[Tacoball]] to [[Taco Ball]]: It’s the intended way to spell it
wikitext
text/x-wiki
Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]]
== History ==
Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 8 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since.
== Menu ==
The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Tacoball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and more ingredients to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Tacoball taco included with mushing as a side.
[[Category: Lore]] [[Category:Map locations]]
c308937b41e58ae5a77616639a2146cc8f2e3cd4
167
161
2022-10-11T17:01:42Z
Hatmanthehat
2
Renamed all Tacoballs to Taco Balls
wikitext
text/x-wiki
Taco Ball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Taco Ball as of 12/10/2008]]
== History ==
Taco Ball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Taco Ball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Taco Ball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Taco Ball died of a heart attack in his own home in Orange Blossom Beach 8 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Taco Ball shortly after in April of 2006. Francisco has been the CEO of Taco Ball since.
== Menu ==
The menu of Taco Ball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Taco Ball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Taco Ball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Taco Ball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and more ingredients to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Taco Ball taco included with mushing as a side.
[[Category: Lore]] [[Category:Map locations]]
bdd3bd3ea78aa4f9f7a6e942844864bfd7edc2e0
Tacoball
0
55
162
2022-10-11T16:59:12Z
Hatmanthehat
2
Hatmanthehat moved page [[Tacoball]] to [[Taco Ball]]: It’s the intended way to spell it
wikitext
text/x-wiki
#REDIRECT [[Taco Ball]]
5575b104571c9c630c10c8ab6feee8e4cedfd775
Alpha 0.0.4
0
51
163
150
2022-10-11T16:59:34Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.4 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.2]], as well as [[Alpha 0.0.3]]. Alpha 0.0.4 was the first fully documented version of OBB.
[[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]]
== Development and Changelog ==
Map improvements were made and a topbar was added.
=== Changelog: ===
# Topbar was added, as seen above
''For the previous version, see [[Alpha 0.0.3]]''
''For the next version, see [[Alpha 0.0.5]]''
[[Category:Versions]]
97c1d3c3ece510e950b8e84a1ad5c86b67b1997a
164
163
2022-10-11T17:00:10Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.4 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.2]], as well as [[Alpha 0.0.3]]. Alpha 0.0.4 was the first fully documented version of OBB.
[[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]]
== Development and Changelog ==
Slight map improvements were made and a topbar was added.
=== Changelog: ===
# Topbar was added, as seen above
''For the previous version, see [[Alpha 0.0.3]]''
''For the next version, see [[Alpha 0.0.5]]''
[[Category:Versions]]
8ea60de72a8473f2a09913fb2cd42eee66dbfb03
173
164
2022-10-11T17:05:25Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.4 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released a few hours after the releases of [[Alpha 0.0.1]], [[Alpha 0.0.2]], and [[Alpha 0.0.3]] on March 21, 2022 at exactly 10:30 PM EST.
[[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]]
== Development and Changelog ==
Slight map improvements were made and a topbar was added.
=== Changelog: ===
# Topbar was added, as seen above
''For the previous version, see [[Alpha 0.0.3]]''
''For the next version, see [[Alpha 0.0.5]]''
[[Category:Versions]]
6d387af2c9f7f6f7fa28afc1143a9059130fc3d7
182
173
2022-10-11T17:13:49Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.4 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released a few hours after the releases of [[Alpha 0.0.1]], [[Alpha 0.0.2]], and [[Alpha 0.0.3]] on March 21, 2022 at exactly 10:30 PM EST.
[[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]]
== Development and Changelog ==
Slight map improvements were made and a topbar was added.
=== Changelog: ===
* Topbar was added, as seen above
''For the previous version, see [[Alpha 0.0.3]]''
''For the next version, see [[Alpha 0.0.5]]''
[[Category:Versions]]
68fa046120d9aa3ef41dcfebc698ab66fefbcccf
Neighborhood RP
0
47
184
146
2022-10-11T17:14:55Z
Hatmanthehat
2
Talked about skripting
wikitext
text/x-wiki
[[File:Neighborhood RP Thumbnail 10-17-2021.jpg|thumb|The 3rd Gen Neighborhood RP thumbnail.]]
Neighborhood RP was the spiritual predecessor for the groundworks of [[Orange Blossom Beach (game)|Orange Blossom Beach]] and [[Alpha 0.0.1]]. The game was originally created by [https://www.roblox.com/users/86121841/profile Hattozo] on December 5, 2020 but was later re-uploaded on February 6, 2021 after an incident which made the game content deleted by the Roblox moderation team. The game was discontinued on March 30, 2022 and is now no longer playable.
== Development ==
Neighborhood RP was worked on from December 5, 2020 to March 30, 2022. It went through several map revamps and game changes, which are both separated between 3 eras. Generation 1, 2, and 3. The game itself was originally preceded by a friends only RP game which was created around early 2019, in which that was a replacement for a series that lasted from 2016-2018 that was also a private game for friends only.
=== Generation 1 ===
Generation 1 of Neighborhood RP, which was worked on during December of 2020. It was a very flat map which was absent of any terrain whatsoever but was a still expanding map. It was originally made for a different game when dominickdoesstuff created the map and brought up the idea for said map, but it ended up being published as Neighborhood RP. All of the scripts were still the same from the previous game made in 2019, using mainly mesh tools and these tools are still prevalent as of [[Alpha 0.2.5]] of OBB such as the molotov. Later on into the maps life cycle, the map eventually began being filled up with more buildings. Due to the small but filled map design, it was considered as the best Neighborhood RP map.
=== Generation 2 ===
Generation 2 of Neighborhood RP was almost the same game, in which this generation was worked on during early 2021 and parts of mid 2021. The map was changed and instead opted for a forest based map and the same house but was heavily scrutinized and criticized because of its dull and depressing map design. The Neighborhood RP house was instead off the grid this time and there were less buildings than the previous map. It still primarily had the same tools and mentioned in generation 1, but had a few extra improvements. Much didn't change but the new depressing map and the game still mostly remained the same when it came to scripting.
=== Generation 3 ===
Generation 3 was the last and final era of Neighborhood RP. It was worked on during late 2021 after not being picked up for months. It again changed the map to a more expanded but wasteland inspired map including an abandoned town. The map was a step up from the Gen 2 map, but still felt very empty due to its larger size and basically being a tech demo for the game. However, this is where the scripting really started to pickup, which added all-new features like a spawn menu, subtle but big improvements like custom footstep noises, the Cmdr console, and so on. This era was basically the foundations for OBB as it would later be rebranded as OBB marking the beginnings of Orange Blossom Beach.
''For the next version, see OBB [[Alpha 0.0.1]]''
[[Category:Versions]]
905cc8b292c0b519390331ded7e512e8d56b84fc
Alpha 0.0.6
0
56
187
2022-10-11T18:06:13Z
Vorlitix
3
Created page with "OBB Alpha 0.0.6 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 23, 2022. Alpha 0.0.6 was an admin improvement and bug fix update. == Development and Changelog == Many bugs were still left in from development with Alpha 0.0.5, however remaining audio related and teleporter related issues were fixed shortly after Alpha 0.0.5 in the form of Alpha 0.0.6. Alpha 0.0.6 also introduced the Mossberg 500 and the Taurus Judge...."
wikitext
text/x-wiki
OBB Alpha 0.0.6 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 23, 2022. Alpha 0.0.6 was an admin improvement and bug fix update.
== Development and Changelog ==
Many bugs were still left in from development with Alpha 0.0.5, however remaining audio related and teleporter related issues were fixed shortly after Alpha 0.0.5 in the form of Alpha 0.0.6. Alpha 0.0.6 also introduced the Mossberg 500 and the Taurus Judge.
=== Changelog ===
* Super-Admin added
* Notifications added
* Fixed scope for the M24 Sniper Rifle to have the right FOV in first person
* Global shaking caused by teleporter fixed
* Minor missing audio issues fixed
* Mossberg 500 and Taurus Judge added
''For the previous version, see [[Alpha 0.0.5]]''
''For the next version, see [[Alpha 0.0.7]]''
[[Category:Versions]]
82e3d0df083790f71e7ee54e75af1cc5802e6e15
189
187
2022-10-11T18:22:03Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.6 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 23, 2022. Alpha 0.0.6 was an admin improvement and bug fix update.
== Development and Changelog ==
Many bugs were still left in from development with Alpha 0.0.5, however remaining audio related and teleporter related issues were fixed shortly after Alpha 0.0.5 in the form of Alpha 0.0.6. Alpha 0.0.6 also introduced the Mossberg 500 and the Taurus Judge.
[[File:OBBAlpha006.png|thumb|Mossberg 500]]
=== Changelog ===
* Super-Admin added
* Notifications added
* Fixed scope for the M24 Sniper Rifle to have the right FOV in first person
* Global shaking caused by teleporter fixed
* Minor missing audio issues fixed
* Mossberg 500 and Taurus Judge added
''For the previous version, see [[Alpha 0.0.5]]''
''For the next version, see [[Alpha 0.0.7]]''
[[Category:Versions]]
f59e9b1dcddd7f4d7a9b15ee0a4f98cbb93f9b4b
File:OBBAlpha006.png
6
57
188
2022-10-11T18:21:04Z
Vorlitix
3
wikitext
text/x-wiki
Alpha Screenshot
5b0d33f2d8291fe1b9cfe0c442dc935e3e0dbb5f
Alpha 0.0.0
0
58
190
2022-10-11T18:25:32Z
Vorlitix
3
Created page with "<nowiki>#REDIRECT [[Neighborhood RP]]</nowiki>"
wikitext
text/x-wiki
<nowiki>#REDIRECT [[Neighborhood RP]]</nowiki>
e9fcbc1b0f0211560337879a937c6a234d65d222
191
190
2022-10-11T18:25:50Z
Vorlitix
3
Redirected page to [[Neighborhood RP]]
wikitext
text/x-wiki
#REDIRECT [[Neighborhood_RP]]
605810efecd02a37e6b35bce583b113345edc207
Alpha 0.0.7
0
59
192
2022-10-11T18:38:19Z
Vorlitix
3
Created page with "OBB Alpha 0.0.7 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.6 added a brand new chat and adjusted the cmdr commands. == Development and Changelog == There isn't much about development, but it took a while to decide wether to remove Kohls Admin or to keep it as a secondary admin panel. === Changelog: === * Added a custom chat * More cmdr commands * Kohls Admin temporarily removed '''- Custom..."
wikitext
text/x-wiki
OBB Alpha 0.0.7 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.6 added a brand new chat and adjusted the cmdr commands.
== Development and Changelog ==
There isn't much about development, but it took a while to decide wether to remove Kohls Admin or to keep it as a secondary admin panel.
=== Changelog: ===
* Added a custom chat
* More cmdr commands
* Kohls Admin temporarily removed
'''- Custom chat temporarily disabled'''
'''+ Khols Admin added back as a secondary admin panel'''
''For the previous version, see [[Alpha 0.0.6]]''
''For the next version, see [[Alpha 0.0.8]]''
[[Category:Versions]]
504f1b6b9f767845d4861b00bb78d216d08f8b34
193
192
2022-10-11T18:41:29Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.7 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.7 added (and then removed) a brand new chat and adjusted the cmdr commands.
== Development and Changelog ==
There isn't much about development, but it took a while to decide wether to remove Kohls Admin or to keep it as a secondary admin panel.
=== Changelog: ===
* Added a custom chat
* More cmdr commands
* Kohls Admin temporarily removed
'''- Custom chat temporarily disabled'''
'''+ Khols Admin added back as a secondary admin panel'''
''For the previous version, see [[Alpha 0.0.6]]''
''For the next version, see [[Alpha 0.0.8]]''
[[Category:Versions]]
5a1d46bd0e29559f90c655911de493a0161b5a7a
194
193
2022-10-11T18:56:29Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.7 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.7 added (and then removed) a brand new chat and adjusted the cmdr commands.
== Development and Changelog ==
There isn't much about development, but it took a while to decide wether to remove Kohls Admin or to keep it as a secondary admin panel.
=== Changelog: ===
* Added a custom chat
* More cmdr commands
* Kohls Admin temporarily removed
* '''Custom chat removed -'''
* '''Kohls Admin temporarily added back +'''
''For the previous version, see [[Alpha 0.0.6]]''
''For the next version, see [[Alpha 0.0.8]]''
[[Category:Versions]]
31770455ac5c87455119b8484e623a781ae58725
Alpha 0.0.8
0
60
196
2022-10-11T19:06:39Z
Vorlitix
3
Created page with "OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full. ==Development and Changelog== The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10..."
wikitext
text/x-wiki
OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full.
==Development and Changelog==
The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST.
'''Changelog:'''
*Fly and invisible commands added
*Custom chat reenabled
*Kohls Admin removed again
*New sprinting animation
*Crouching temporarily removed
*WIP player model outfitter
*'''Kohls Admin added back at 10:55 AM +'''
''For the previous version, see [[Alpha 0.0.7]]''
''For the next version, see [[Alpha 0.0.9]]''
[[Category:Versions]]
0ae84edcce55034547bc8b347f1c7b070fbd064a
197
196
2022-10-11T19:07:31Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full.
==Development and Changelog==
The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST.
'''Changelog:'''
*Fly and invisible commands added
*Custom chat reenabled
*Kohls Admin removed again
*New sprinting animation
*Crouching temporarily removed
*WIP player model outfitter
*'''Kohls Admin added back at 10:55 AM +'''
*'''Sprinting animation removed shortly after announcement of Alpha 0.0.8 -'''
''For the previous version, see [[Alpha 0.0.7]]''
''For the next version, see [[Alpha 0.0.9]]''
[[Category:Versions]]
0a88550f030eb78698282fe3e8e29e9a2ce9aa3c
198
197
2022-10-11T19:07:55Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full.
==Development and Changelog==
The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST.
'''Changelog:'''
*Fly and invisible commands added
*Custom chat reenabled
*Kohls Admin removed again
*New sprinting animation
*Crouching temporarily removed
*WIP player model outfitter
*'''Sprinting animation removed shortly after announcement of Alpha 0.0.8 -'''
*'''Kohls Admin added back at 10:55 AM +'''
''For the previous version, see [[Alpha 0.0.7]]''
''For the next version, see [[Alpha 0.0.9]]''
[[Category:Versions]]
3db2203447e8a1264675d3184eca2956081e0d18
200
198
2022-10-11T19:24:04Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full.
[[File:OBBAlpha008.png|thumb|281x281px|Early design for the outfitter.]]
==Development and Changelog==
The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST.
'''Changelog:'''
*Fly and invisible commands added
*Custom chat reenabled
*Kohls Admin removed again
*New sprinting animation
*Crouching temporarily removed
*WIP player model outfitter
*'''Sprinting animation removed shortly after announcement of Alpha 0.0.8 -'''
*'''Kohls Admin added back at 10:55 AM +'''
''For the previous version, see [[Alpha 0.0.7]]''
''For the next version, see [[Alpha 0.0.9]]''
[[Category:Versions]]
dbf41505585e4fd64cbfb8831d2ea01d54c996ca
201
200
2022-10-11T19:26:30Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 26, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full.
[[File:OBBAlpha008.png|thumb|281x281px|Early design for the outfitter.]]
==Development and Changelog==
The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST.
'''Changelog:'''
*Fly and invisible commands added
*Custom chat reenabled
*Kohls Admin removed again
*New sprinting animation
*Crouching temporarily removed
*WIP player model outfitter
*'''Sprinting animation removed shortly after announcement of Alpha 0.0.8 -'''
*'''Kohls Admin added back at 10:55 AM +'''
''For the previous version, see [[Alpha 0.0.7]]''
''For the next version, see [[Alpha 0.0.9]]''
[[Category:Versions]]
40f75a2772416e1135d8ef10f1094465849d4aae
File:OBBAlpha008.png
6
61
199
2022-10-11T19:22:57Z
Vorlitix
3
wikitext
text/x-wiki
Alpha Screenshot
5b0d33f2d8291fe1b9cfe0c442dc935e3e0dbb5f
Cramework
0
4
202
88
2022-10-11T22:16:01Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Miscellaneous information]]
{{stub}}
Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in [[Orange Blossom Beach (game)|Orange Blossom Beach]] is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so.
Cramework was officially added to the main game on July 31, 2022 as part of the 0.1.7.1 update for the game.
== Features ==
Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version.
== Confusions and Misunderstandings ==
'''Cramework is not a game engine!''' It is solely a framework used to aid the development of realism-esque games on Roblox. The actual game engine is Roblox’s own proprietary engine.
fe664e8d5a19aaedafa2af2876fd2f42ba974313
Alpha 0.0.1
0
48
203
178
2022-10-11T22:20:23Z
Hatmanthehat
2
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:16 PM, EST a few minutes before [[Alpha 0.0.2]] and a few hours before [[Alpha 0.0.3]].
== Development and Changelog ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
The games map at the time was just a simple map featuring a [[Taco Ball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions.
=== Changelog: ===
* Fixed tools that relied on touching players.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2]]''
[[Category:Versions]]
b50739f5e6a154f3a829cca5376298940a17b0b5
File:Thumbnail - August 2022.png
6
62
204
2022-10-12T03:26:36Z
Hatmanthehat
2
wikitext
text/x-wiki
Added on August 12 2022
148759fd4cf15e48b7f2b4b1e7736980bb269401
Orange Blossom Beach (game)
0
26
205
121
2022-10-12T03:27:28Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Miscellaneous_information]]
[[Category:Lore]]
[[File:Thumbnail - August 2022.png|thumb|The game's thumbnail (circa 2022)]]
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009, set in the state of Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
''For more information, see [[Neighborhood RP]]''
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
{{stub}}
48d8dcd3e185b4fc3f1a3b027639aec252afd769
206
205
2022-10-13T03:49:39Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Miscellaneous_information]]
[[Category:Lore]]
[[File:Thumbnail - August 2022.png|thumb|The game's thumbnail (circa 2022)]]
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2021 (full release unknown) made by creators dominickdoesstuff and Hattozo. The game takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009, set in the state of Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
''For more information, see [[Neighborhood RP]]''
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
{{stub}}
c235fc735b9b15944e8c5982d7f68776a768e018
207
206
2022-10-13T03:51:13Z
Hatmanthehat
2
wikitext
text/x-wiki
[[Category:Miscellaneous_information]]
[[Category:Lore]]
[[File:Thumbnail - August 2022.png|thumb|The game's thumbnail (circa 2022)]]
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2021 (full release unknown) made by creators dominickdoesstuff and Hattozo. The game takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features that give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009, set in the state of Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
''For more information, see [[Neighborhood RP]]''
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
{{stub}}
fb3ea6f4ddd6e613a03b2cb80acf08684901ef53
212
207
2022-11-26T06:29:17Z
Hatmanthehat
2
lets not try to be misleading
wikitext
text/x-wiki
[[Category:Miscellaneous_information]]
[[Category:Lore]]
[[File:Thumbnail - August 2022.png|thumb|The game's thumbnail (circa 2022)]]
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2021 (full release unknown) made by creators dominickdoesstuff and Hattozo. The game takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are still features that give an immersive experience into the city. For example, you can take a view at the vast city right now. Later, you'll be able to perform shoot-outs in streets with guns that you can buy from the gun store, or buy suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009, set in the state of Florida
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
''For more information, see [[Neighborhood RP]]''
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting)
{{stub}}
a1c3eac0c189aa8a929f6213977ebf8326bc9872
248
212
2023-03-28T19:41:53Z
Vorlitix
3
POOP EVERYWHERE
wikitext
text/x-wiki
[[Category:Miscellaneous_information]]
[[Category:Lore]]
[[File:Thumbnail - August 2022.png|thumb|The game's thumbnail (circa 2022)]]
''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].''
Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2021 (full release unknown) made by creators dominickdoesstuff and Hattozo. The game takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are still features that give an immersive experience into the city. For example, you can take a view at the vast city right now. Later, you'll be able to perform shoot-outs in streets with guns that you can buy from the gun store, or buy suburban houses that you can live in, and much more.
Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page.
== Gameplay ==
The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world.
== Background ==
The main storyline takes place in 2008-2009, set in Gulf County, Florida.
== History ==
Orange Blossom Beach has gone through several stages to become what it is today.
=== Pre-OBB ===
==== Late 2020 - Early 2021 ====
''For more information, see [[Neighborhood RP]]''
The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach.
Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day.
In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted.
==== Late 2021 ====
After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself.
=== OBB ===
==== Early 2022 - ??? ====
This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect.
== Community ==
The community is not fully established yet.
== Credits ==
The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting).
{{stub}}
073ccfb2eb006252a14cb7a9af7ebc8f81775ad3
Orange Blossom Beach
0
33
208
115
2022-11-09T04:27:36Z
Hatmanthehat
2
Allegedly. Yes, allegedly.
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s.
It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation.
Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area.
c31951d446d41e57f70b44ead005a7a08e817c2e
Kaleidoscopic Records
0
63
209
2022-11-09T04:28:00Z
47.185.33.228
0
Created page with "Kaleidoscopic Records is a record store located in Orange Blossom Beach. It is owned by KaleidoscopicPrism."
wikitext
text/x-wiki
Kaleidoscopic Records is a record store located in Orange Blossom Beach. It is owned by KaleidoscopicPrism.
4ea9cda8b7b63820d1bf0158f28c20e0a2c7cb03
Prism News
0
64
210
2022-11-09T04:29:09Z
47.185.33.228
0
Created page with "Prism News is a news company owned by KaleidoscopicPrism."
wikitext
text/x-wiki
Prism News is a news company owned by KaleidoscopicPrism.
783c5ac4c8991cfcfac320b54fd19abecabf85a0
User:Guests
2
66
213
2022-12-05T20:17:41Z
Guests
13
the dogd oin
wikitext
text/x-wiki
least deranged obb developer
i build and sometimes script
'''_____ _
/ ____| | |
| | __ _ _ ___ ___| |_ ___
| | |_ | | | |/ _ \/ __| __/ __|
| |__| | |_| | __/\__ \ |_\__ \
\_____|\__,_|\___||___/\__|___/'''
ead4f6b35d99e18fc3924920dc05a56e37934985
Alpha 0.0.9
0
67
214
2023-02-16T17:58:20Z
Vorlitix
3
Created page with "OBB Alpha 0.0.9 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.0.9 introduced roleplay names and a functioning ragdoll system. ==Development and Changelog== The development behind Alpha 0.0.9 was fairly simple and did not take much deciding on what to add at the time. Alpha 0.0.9 was announced on 10:50 PM EST. '''Changelog:''' *Roleplay names are added and implemented into the outfitter GUI *Ragdol..."
wikitext
text/x-wiki
OBB Alpha 0.0.9 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.0.9 introduced roleplay names and a functioning ragdoll system.
==Development and Changelog==
The development behind Alpha 0.0.9 was fairly simple and did not take much deciding on what to add at the time. Alpha 0.0.9 was announced on 10:50 PM EST.
'''Changelog:'''
*Roleplay names are added and implemented into the outfitter GUI
*Ragdoll introduced by pressing E + R
*Profileservice datastore system introduced
''For the previous version, see [[Alpha 0.0.8]]''
''For the next version, see [[Alpha 0.1.0]]''
[[Category:Versions]]
d84fae987daa232618bb0f8ac824d6cea435c0f4
215
214
2023-02-16T18:07:03Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.9 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 27, 2022. Alpha 0.0.9 introduced roleplay names and a functioning ragdoll system.
==Development and Changelog==
The development behind Alpha 0.0.9 was fairly simple and did not take much deciding on what to add at the time. Alpha 0.0.9 was announced on 10:50 PM EST.
'''Changelog:'''
*Roleplay names are added and implemented into the outfitter GUI
*Ragdoll introduced by pressing E + R
*Profileservice datastore system introduced
''For the previous version, see [[Alpha 0.0.8]]''
''For the next version, see [[Alpha 0.1.0]]''
[[Category:Versions]]
fd2854467f0440ea383ccaccda6fcfdaa091b147
229
215
2023-03-04T00:27:31Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.9 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 27, 2022. Alpha 0.0.9 introduced roleplay names and a functioning ragdoll system.
==Development and Changelog==
The development behind Alpha 0.0.9 was fairly simple and did not take much deciding on what to add at the time. Alpha 0.0.9 was announced on 10:50 PM EST.
'''Changelog:'''
*Roleplay names are added and implemented into the outfitter GUI
*Ragdoll introduced by pressing E + R
*Profileservice datastore system introduced
''For the previous version, see [[Alpha 0.0.8]]''
''For the next version, see [[Alpha 0.1.0]]''
[[Category:Versions]]
d9b4a9bae612885e103d151d8c5c4e4d27c17b50
Alpha 0.1.0
0
68
216
2023-02-16T18:13:13Z
Vorlitix
3
created this whole ass page
wikitext
text/x-wiki
OBB Alpha 0.1.0 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.1.0 introduced the ability to view stats. It also introduced presets in the outfitter. The update was later expanded upon a few moments after it was released.
==Development and Changelog==
The development behind Alpha 0.1.0, like Alpha 0.0.9, wasn't very complicated. Not much was added because of "shitty motivational problems" expressed by the game creator, Hattozo. Alpha 0.1.0 was announced on 10:01 PM EST. However, later in the day, on 10:28 PM EST, it was announced that cars were added, as well as 2 new NPCs. These NPCs being npc_lego01 and npc_roblox01.
'''Changelog:'''
*Viewable stats via pressing Shift + M
*Outfitter overhaul
*Presets added
*Several cars added
*Harvey Casino Bomb added (non-functional in the game itself)
*NPCs added; npc_lego01, npc_roblox01
''For the previous version, see [[Alpha 0.0.9]]''
''For the next version, see [[Alpha 0.1.1]]''
[[Category:Versions]]
92640a072a51e0792a3b6842b1edfca9261dceb2
218
216
2023-02-16T18:17:23Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.1.0 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.1.0 introduced the ability to view stats. It also introduced presets in the outfitter. The update was later expanded upon a few moments after it was released.
[[File:Npcs0.1.0.png|thumb|The NPCs introduced in Alpha 0.1.0]]
==Development and Changelog==
The development behind Alpha 0.1.0, like Alpha 0.0.9, wasn't very complicated. Not much was added because of "shitty motivational problems" expressed by the game creator, Hattozo. Alpha 0.1.0 was announced on 10:01 PM EST. However, later in the day, on 10:28 PM EST, it was announced that cars were added, as well as 2 new NPCs. These NPCs being npc_lego01 and npc_roblox01.
'''Changelog:'''
*Viewable stats via pressing Shift + M
*Outfitter overhaul
*Presets added
*Several cars added
*Harvey Casino Bomb added (non-functional in the game itself)
*NPCs added; npc_lego01, npc_roblox01
''For the previous version, see [[Alpha 0.0.9]]''
''For the next version, see [[Alpha 0.1.1]]''
[[Category:Versions]]
9cc61f85c1ade4a78ddb56c1b0193dc25ab42518
230
218
2023-03-04T00:27:42Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.1.0 is a minor major to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.1.0 introduced the ability to view stats. It also introduced presets in the outfitter. The update was later expanded upon a few moments after it was released.
[[File:Npcs0.1.0.png|thumb|The NPCs introduced in Alpha 0.1.0]]
==Development and Changelog==
The development behind Alpha 0.1.0, like Alpha 0.0.9, wasn't very complicated. Not much was added because of "shitty motivational problems" expressed by the game creator, Hattozo. Alpha 0.1.0 was announced on 10:01 PM EST. However, later in the day, on 10:28 PM EST, it was announced that cars were added, as well as 2 new NPCs. These NPCs being npc_lego01 and npc_roblox01.
'''Changelog:'''
*Viewable stats via pressing Shift + M
*Outfitter overhaul
*Presets added
*Several cars added
*Harvey Casino Bomb added (non-functional in the game itself)
*NPCs added; npc_lego01, npc_roblox01
''For the previous version, see [[Alpha 0.0.9]]''
''For the next version, see [[Alpha 0.1.1]]''
[[Category:Versions]]
58760a55cc1280d2c11e04bce97ebd0eb20c302b
231
230
2023-03-04T00:27:55Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.1.0 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.1.0 introduced the ability to view stats. It also introduced presets in the outfitter. The update was later expanded upon a few moments after it was released.
[[File:Npcs0.1.0.png|thumb|The NPCs introduced in Alpha 0.1.0]]
==Development and Changelog==
The development behind Alpha 0.1.0, like Alpha 0.0.9, wasn't very complicated. Not much was added because of "shitty motivational problems" expressed by the game creator, Hattozo. Alpha 0.1.0 was announced on 10:01 PM EST. However, later in the day, on 10:28 PM EST, it was announced that cars were added, as well as 2 new NPCs. These NPCs being npc_lego01 and npc_roblox01.
'''Changelog:'''
*Viewable stats via pressing Shift + M
*Outfitter overhaul
*Presets added
*Several cars added
*Harvey Casino Bomb added (non-functional in the game itself)
*NPCs added; npc_lego01, npc_roblox01
''For the previous version, see [[Alpha 0.0.9]]''
''For the next version, see [[Alpha 0.1.1]]''
[[Category:Versions]]
c7bf97013c2bf3d8c9d431495fe71d430d8b328a
File:Npcs0.1.0.png
6
69
217
2023-02-16T18:17:05Z
Vorlitix
3
wikitext
text/x-wiki
\g
59b6ccaeee64c4342b86b0d0afade68662044036
Alpha 0.1.1
0
70
219
2023-02-16T18:30:38Z
Vorlitix
3
I like to drink the pulp from Orange Juice
wikitext
text/x-wiki
OBB Alpha 0.1.0 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 1, 2022. Alpha 0.1.1 introduced little, but it did introduce one of the first "fun" (or unessential) admin commands.
==Development and Changelog==
There isn't much about the development surrounding Alpha 0.1.1, however there were plans made to revise parts of the map. One of the things that the update did implement, the explode on walk command, was inspired by the video uploaded on the same day by [https://www.youtube.com/@vorlitix Vorlitix], titled [https://www.youtube.com/watch?v=sEqFd0JpD7I ''The Best ROBLOX Update Ever'']. Alpha 0.1.1 was announced on 10:54 PM EST.
'''Changelog:'''
*More NPCs added
*Storage chests; left incomplete
*explode_on_walk command added
''For the previous version, see [[Alpha 0.1.0]]''
''For the next version, see [[Alpha 0.1.2]]''
5fc2febe7936f9d13f38509f6d53fa5bcd6d4846
220
219
2023-02-16T18:32:42Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.1.0 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 1, 2022. Alpha 0.1.1 introduced little, but it did introduce one of the first "fun" (or unessential) admin commands.
==Development and Changelog==
There isn't much about the development surrounding Alpha 0.1.1, however there were plans made to revise parts of the map. One of the things that the update did implement, the explode on walk command, was inspired by the video uploaded on the same day by [https://www.youtube.com/@vorlitix Vorlitix], titled [https://www.youtube.com/watch?v=sEqFd0JpD7I ''The Best ROBLOX Update Ever'']. Alpha 0.1.1 was announced on 10:54 PM EST.
'''Changelog:'''
*More NPCs added
*Storage chests; left incomplete
*explode_on_walk command added
''For the previous version, see [[Alpha 0.1.0]]''
''For the next version, see [[Alpha 0.1.2]]''
[[Category:Versions]]
12ef9fd40a5213aa716f1c4a0f8d8c7b800469ab
232
220
2023-03-04T00:28:04Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.1.0 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 1, 2022. Alpha 0.1.1 introduced little, but it did introduce one of the first "fun" (or unessential) admin commands.
==Development and Changelog==
There isn't much about the development surrounding Alpha 0.1.1, however there were plans made to revise parts of the map. One of the things that the update did implement, the explode on walk command, was inspired by the video uploaded on the same day by [https://www.youtube.com/@vorlitix Vorlitix], titled [https://www.youtube.com/watch?v=sEqFd0JpD7I ''The Best ROBLOX Update Ever'']. Alpha 0.1.1 was announced on 10:54 PM EST.
'''Changelog:'''
*More NPCs added
*Storage chests; left incomplete
*explode_on_walk command added
''For the previous version, see [[Alpha 0.1.0]]''
''For the next version, see [[Alpha 0.1.2]]''
[[Category:Versions]]
067dd5233a542cdacb744f9ef9fc59bb9f816a60
233
232
2023-03-04T00:28:12Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.1.1 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 1, 2022. Alpha 0.1.1 introduced little, but it did introduce one of the first "fun" (or unessential) admin commands.
==Development and Changelog==
There isn't much about the development surrounding Alpha 0.1.1, however there were plans made to revise parts of the map. One of the things that the update did implement, the explode on walk command, was inspired by the video uploaded on the same day by [https://www.youtube.com/@vorlitix Vorlitix], titled [https://www.youtube.com/watch?v=sEqFd0JpD7I ''The Best ROBLOX Update Ever'']. Alpha 0.1.1 was announced on 10:54 PM EST.
'''Changelog:'''
*More NPCs added
*Storage chests; left incomplete
*explode_on_walk command added
''For the previous version, see [[Alpha 0.1.0]]''
''For the next version, see [[Alpha 0.1.2]]''
[[Category:Versions]]
b76bf5c4c2d46280e242f192ef25b2cf2f5040fa
244
233
2023-03-06T02:13:08Z
Vorlitix
3
added image
wikitext
text/x-wiki
OBB Alpha 0.1.1 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 1, 2022. Alpha 0.1.1 introduced little, but it did introduce one of the first "fun" (or unessential) admin commands.
[[File:Storagechestui.png|thumb|The experimental storage chest UI.]]
==Development and Changelog==
There isn't much about the development surrounding Alpha 0.1.1, however there were plans made to revise parts of the map. One of the things that the update did implement, the explode on walk command, was inspired by the video uploaded on the same day by [https://www.youtube.com/@vorlitix Vorlitix], titled [https://www.youtube.com/watch?v=sEqFd0JpD7I ''The Best ROBLOX Update Ever'']. Alpha 0.1.1 was announced on 10:54 PM EST.
'''Changelog:'''
*More NPCs added
*Storage chests; left incomplete
*explode_on_walk command added
''For the previous version, see [[Alpha 0.1.0]]''
''For the next version, see [[Alpha 0.1.2]]''
[[Category:Versions]]
7fa4559c796d4ab436b1764b4d9a72e2387fdfa7
Alpha 0.1.2
0
71
221
2023-03-03T07:47:25Z
Vorlitix
3
Tacos should strictly be eaten on Tuesdays
wikitext
text/x-wiki
OBB Alpha 0.1.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 2, 2022. Alpha 0.1.2, like Alpha 0.1.1, had little to introduce.
==Development and Changelog==
Alpha 0.1.2 mostly revamped a couple of features, like footstep sound effects. Due to past and recent events, a gun-free zone was put under the school inside of Orange Blossom Beach. The update was rolled out on 11:22 PM EST.
'''Changelog:'''
*Replaced CSGO sound effects for different footstep sound effects
*Added missing footstep sound effects
*E to sit on seats
*New particle FX for guns
*Disintegrate command
*Can no longer use guns inside of the OBB school
''For the previous version, see [[Alpha 0.1.1]]''
''For the next version, see [[Alpha 0.1.3]]''
[[Category:Versions]]
075c6782c548c66bbcb8f638703c15b022208065
234
221
2023-03-04T00:28:21Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.1.2 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 2, 2022. Alpha 0.1.2, like Alpha 0.1.1, had little to introduce.
==Development and Changelog==
Alpha 0.1.2 mostly revamped a couple of features, like footstep sound effects. Due to past and recent events, a gun-free zone was put under the school inside of Orange Blossom Beach. The update was rolled out on 11:22 PM EST.
'''Changelog:'''
*Replaced CSGO sound effects for different footstep sound effects
*Added missing footstep sound effects
*E to sit on seats
*New particle FX for guns
*Disintegrate command
*Can no longer use guns inside of the OBB school
''For the previous version, see [[Alpha 0.1.1]]''
''For the next version, see [[Alpha 0.1.3]]''
[[Category:Versions]]
25cf90013234f2496089002ef77ac387544806c4
Alpha 0.1.3
0
72
222
2023-03-03T07:58:59Z
Vorlitix
3
Pizza rolls are amazing
wikitext
text/x-wiki
OBB Alpha 0.1.3 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 5, 2022. Alpha 0.1.3 introduced quite a bit, like being able to grab models properly.
==Development and Changelog==
Alpha 0.1.3 too revamped sounds and adjusted things due to performance reasons. It also made it to where roleplay names are now filtered due to roleplay names not having a filter when they were originally added.
'''Changelog:'''
*Disabled Streaming Enabled due to performance issues
*Applied knockback when shooting unanchored parts with a gun
*Improved flashlight sound
*Used proximityprompt to pick up tools
*Able to grab models that are made up with more than 1 part
*Rebinded E to H when it comes to holstering guns
*RP names are now filtered
*Animations are now supported when aiming a gun down in third person
*Support for aiming sounds
*Black transitions on the screen for when you die or reset
''For the previous version, see [[Alpha 0.1.2]]''
''For the next version, see [[Alpha 0.1.4]]''
[[Category:Versions]]
735d8fbf9b61968a4582fdffa5c88b2eee515d87
235
222
2023-03-04T00:28:34Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.1.3 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 5, 2022. Alpha 0.1.3 introduced quite a bit, like being able to grab models properly.
==Development and Changelog==
Alpha 0.1.3 too revamped sounds and adjusted things due to performance reasons. It also made it to where roleplay names are now filtered due to roleplay names not having a filter when they were originally added.
'''Changelog:'''
*Disabled Streaming Enabled due to performance issues
*Applied knockback when shooting unanchored parts with a gun
*Improved flashlight sound
*Used proximityprompt to pick up tools
*Able to grab models that are made up with more than 1 part
*Rebinded E to H when it comes to holstering guns
*RP names are now filtered
*Animations are now supported when aiming a gun down in third person
*Support for aiming sounds
*Black transitions on the screen for when you die or reset
''For the previous version, see [[Alpha 0.1.2]]''
''For the next version, see [[Alpha 0.1.4]]''
[[Category:Versions]]
1422a521b86de9ae0d5ba2cf39645b5c669b5d3c
Alpha 0.0.2
0
49
223
180
2023-03-04T00:26:24Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.2 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:46 PM, EST a few minutes after [[Alpha 0.0.1]] and a few hours before [[Alpha 0.0.3]].
== Development and Changelog ==
Not much changed but the game becoming a pitch louder.
=== Changelog: ===
* SoundGroup's volume is now 1 and not 0.5
''For the previous version, see [[Alpha 0.0.1]]''
''For the next version, see [[Alpha 0.0.3]]''
[[Category:Versions]]
03dcce75a308bc4076ce77a7c81dbae340a669d9
Alpha 0.0.4
0
51
224
182
2023-03-04T00:26:41Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.4 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released a few hours after the releases of [[Alpha 0.0.1]], [[Alpha 0.0.2]], and [[Alpha 0.0.3]] on March 21, 2022 at exactly 10:30 PM EST.
[[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]]
== Development and Changelog ==
Slight map improvements were made and a topbar was added.
=== Changelog: ===
* Topbar was added, as seen above
''For the previous version, see [[Alpha 0.0.3]]''
''For the next version, see [[Alpha 0.0.5]]''
[[Category:Versions]]
ab58fda1f1944a2784746374a2f147973bd3606e
Alpha 0.0.5
0
53
225
195
2023-03-04T00:26:52Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.5 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]]
== Development and Changelog ==
Alpha 0.0.5 didn't add much to OBB and development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds.
Changelog:
* Sound fixes
* Added a teleporter in [[Central Red - US]] than teleports you to a randomized game
''For the previous version, see [[Alpha 0.0.4]]''
''For the next version, see [[Alpha 0.0.6]]''
[[Category:Versions]]
c0c230727d92323cba4c3e9912016fb7124ac075
246
225
2023-03-18T01:33:57Z
Hatmanthehat
2
typo
wikitext
text/x-wiki
OBB Alpha 0.0.5 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]]
== Development and Changelog ==
Alpha 0.0.5 didn't add much to OBB and development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds.
Changelog:
* Sound fixes
* Added a teleporter in [[Central Red - US]] that teleports you to a randomized game
''For the previous version, see [[Alpha 0.0.4]]''
''For the next version, see [[Alpha 0.0.6]]''
[[Category:Versions]]
b313d862a3cc14abf3ae3e4e0a104a09e5be1691
Alpha 0.0.6
0
56
226
189
2023-03-04T00:27:05Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.6 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 23, 2022. Alpha 0.0.6 was an admin improvement and bug fix update.
== Development and Changelog ==
Many bugs were still left in from development with Alpha 0.0.5, however remaining audio related and teleporter related issues were fixed shortly after Alpha 0.0.5 in the form of Alpha 0.0.6. Alpha 0.0.6 also introduced the Mossberg 500 and the Taurus Judge.
[[File:OBBAlpha006.png|thumb|Mossberg 500]]
=== Changelog ===
* Super-Admin added
* Notifications added
* Fixed scope for the M24 Sniper Rifle to have the right FOV in first person
* Global shaking caused by teleporter fixed
* Minor missing audio issues fixed
* Mossberg 500 and Taurus Judge added
''For the previous version, see [[Alpha 0.0.5]]''
''For the next version, see [[Alpha 0.0.7]]''
[[Category:Versions]]
d6789d71cdcbed1b8df3edeb9e35633276e4e6d2
Alpha 0.0.7
0
59
227
194
2023-03-04T00:27:12Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.7 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.7 added (and then removed) a brand new chat and adjusted the cmdr commands.
== Development and Changelog ==
There isn't much about development, but it took a while to decide wether to remove Kohls Admin or to keep it as a secondary admin panel.
=== Changelog: ===
* Added a custom chat
* More cmdr commands
* Kohls Admin temporarily removed
* '''Custom chat removed -'''
* '''Kohls Admin temporarily added back +'''
''For the previous version, see [[Alpha 0.0.6]]''
''For the next version, see [[Alpha 0.0.8]]''
[[Category:Versions]]
ac47a77a4fbfba70b26e977afb97054377c115c3
Alpha 0.0.8
0
60
228
201
2023-03-04T00:27:20Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.0.8 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 26, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full.
[[File:OBBAlpha008.png|thumb|281x281px|Early design for the outfitter.]]
==Development and Changelog==
The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST.
'''Changelog:'''
*Fly and invisible commands added
*Custom chat reenabled
*Kohls Admin removed again
*New sprinting animation
*Crouching temporarily removed
*WIP player model outfitter
*'''Sprinting animation removed shortly after announcement of Alpha 0.0.8 -'''
*'''Kohls Admin added back at 10:55 AM +'''
''For the previous version, see [[Alpha 0.0.7]]''
''For the next version, see [[Alpha 0.0.9]]''
[[Category:Versions]]
adbd615ec7a99be7c270e3637056f7c7ae0a1ec5
Alpha 0.1.4
0
73
236
2023-03-04T00:37:52Z
Vorlitix
3
Created page with "OBB Alpha 0.1.4 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 9, 2022. The update focused on UI improvements and bug fixes. ==Development and Changelog== Alpha 0.1.4 had a focus on the games UI, a good example of this is that Alpha 0.1.4 updated the primary font to be Roboto Mono. It also improved the gun UI and added functioning ammo boxes. Alpha 0.1.4 was published at 4:58 PM EST. '''Changelog:''' *Updated the..."
wikitext
text/x-wiki
OBB Alpha 0.1.4 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 9, 2022. The update focused on UI improvements and bug fixes.
==Development and Changelog==
Alpha 0.1.4 had a focus on the games UI, a good example of this is that Alpha 0.1.4 updated the primary font to be Roboto Mono. It also improved the gun UI and added functioning ammo boxes. Alpha 0.1.4 was published at 4:58 PM EST.
'''Changelog:'''
*Updated the primary font to Roboto Mono
*Working ammo boxes for submachine guns
*Working ammo boxes for pistols
*Gun UI improved
*The gun UI now shows the proper name of the gun instead of it being listed as an mp5
*Blood now appears when shooting a ragdoll
*Fixed bug where you would die multiple times; such as the death sound playing numerous times and the experimental death camera breaking
*Fixed several issues with the prop pickup functionality
''For the previous version, see [[Alpha 0.1.3]]''
''For the next version, see [[Alpha 0.1.5]]''
[[Category:Versions]]
51debea0c3e65ade5f22ac6346e68ff1d1f00920
237
236
2023-03-04T00:38:51Z
Vorlitix
3
Fixed an issue where the for next or previous version it would combine it with the changelog list.
wikitext
text/x-wiki
OBB Alpha 0.1.4 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 9, 2022. The update focused on UI improvements and bug fixes.
==Development and Changelog==
Alpha 0.1.4 had a focus on the games UI, a good example of this is that Alpha 0.1.4 updated the primary font to be Roboto Mono. It also improved the gun UI and added functioning ammo boxes. Alpha 0.1.4 was published at 4:58 PM EST.
'''Changelog:'''
*Updated the primary font to Roboto Mono
*Working ammo boxes for submachine guns
*Working ammo boxes for pistols
*Gun UI improved
*The gun UI now shows the proper name of the gun instead of it being listed as an mp5
*Blood now appears when shooting a ragdoll
*Fixed bug where you would die multiple times; such as the death sound playing numerous times and the experimental death camera breaking
*Fixed several issues with the prop pickup functionality
''For the previous version, see [[Alpha 0.1.3]]''
''For the next version, see [[Alpha 0.1.5]]''
[[Category:Versions]]
dee54efdb79ef5e4bec73a63e2182392379aa1b1
Alpha 0.1.5
0
74
238
2023-03-04T01:08:55Z
Vorlitix
3
crumbl cookie is a scam
wikitext
text/x-wiki
OBB Alpha 0.1.5 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 13, 2022. Alpha 0.1.5 was central on bug fixes and patches.
==Development and Changelog==
Alpha 0.1.5 was a very expansive update when it came to fixing bugs from previous updates. The update itself was also the start of the current update system of OBB where updates were larger and took longer time to produce. The update released on 8:58 PM EST.
'''Changelog:'''
*Added chat repositioning
*Added chat whispering
*Props are now able to be cleaned through the clean command
*Introduced camera bobbing
*Holstering a gun now unlocks the mouse
*NPCs are now able to crouch
*Guns no longer break if you have a cloned version of your player model in workspace
*The devtest map is no longer cancollide
*Maps now have descriptions when using the map command
*Fixed the bug where the storage UI no longer "existed" when you died or reset
*Implemented command hide_ui to hide the user interface
*Certain cars no longer have a red particle effect when you shoot them
*Death cam is expected to no longer break and return to your player model due to the older system using time raced coordination
*Opacity of the bullet hole texture has been fixed
*Reverted the ambienttype to noreverb as the Roblox reverb is faulty
*Non-firing sounds from guns are now played to other players, such as the reload sound, equip sound, and other sound effects
''For the previous version, see [[Alpha 0.1.4]]''
''For the next version, see [[Alpha 0.1.6]]''
[[Category:Versions]]
b468dbccb3865c51a61048c6474f0c1564afa2ea
245
238
2023-03-06T02:14:54Z
Hatmanthehat
2
wikitext
text/x-wiki
OBB Alpha 0.1.5 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 13, 2022. Alpha 0.1.5 was central on bug fixes and patches.
==Development and Changelog==
Alpha 0.1.5 was a very expansive update when it came to fixing bugs from previous updates. The update itself was also the start of the current update system of OBB where updates were larger and took longer time to produce. The update released on 8:58 PM EST.
'''Changelog:'''
*Added chat repositioning
*Added chat whispering
*Props are now able to be cleaned through the clean command
*Introduced camera bobbing
*Holstering a gun now unlocks the mouse
*NPCs are now able to crouch
*Guns no longer break if you have a cloned version of your player model in workspace
*The devtest map is no longer cancollide
*Maps now have descriptions when using the map command
*Fixed the bug where the storage UI no longer "existed" when you died or reset
*Implemented command hide_ui to hide the user interface
*Certain cars no longer have a red particle effect when you shoot them
*Death cam is expected to no longer break and return to your player model due to the older system using time raced coordination
*Opacity of the bullet hole texture has been fixed
*Reverted the AmbientType to NoReverb as the Roblox reverb is not suitable
*Non-firing sounds from guns are now played to other players, such as the reload sound, equip sound, and other sound effects
''For the previous version, see [[Alpha 0.1.4]]''
''For the next version, see [[Alpha 0.1.6]]''
[[Category:Versions]]
7da845e71f78a081132947b14ea755bc1d17514c
Alpha 0.1.6
0
75
239
2023-03-04T03:53:51Z
Vorlitix
3
i like chinese food it has the perfect consistency of "spicy" and "sweet" on most occasions and really makes my day
wikitext
text/x-wiki
OBB Alpha 0.1.6 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 18, 2022. The update is a continuation of the patches brought out in Alpha 0.1.5.
==Development and Changelog==
Alpha 0.1.6 again focused on bug fixes and patches. This was stated in advance, as according to Hattozo, the game creator and one of the lead directors of Orange Blossom Beach, said that "0.1.6 will feature rest of the bug fixes" after the release of Alpha 0.1.5. The update itself released on 10:04 PM EST.
'''Changelog:'''
*Skybox has been changed to a clearer replacement
*Tweaked lighting
*There are now 2 different textures of the bullet hole impact texture
*Tweaked the hold down animation to rotate downwards as it was causing issues beforehand
*Opacity of the bullet hole texture has been fixed
*Fixed whisper chat colors
*Implemented the NPC npc_default_zombie
*Ladder climbing sounds added
*Added more body impact sounds
*Gore impact sounds for when the players body gets destroyed by an explosion now correctly plays again
*Ragdolling now damages the player
*Upon death the tool the player currently has equipped now drops and unequips
*When ragdolling, you shouldn't flail around while holding a tool
*New effects for water
*Moved the [[Neighborhood RP]] house directly towards the forest area located in [[Shiloh Springs]]
*The Neighborhood RP house now has a basement, as well as a revamped design
*Replaced a poster in the aforementioned Neighborhood RP house
*Made the entrance music to [[Central Red - US|Central Red US]] quieter
''For the previous version, see [[Alpha 0.1.5]]''
''For the next version, see [[Alpha 0.1.7]]''
[[Category:Versions]]
c3ba85cf991b9caf4bb6d0a3cfba7411ec58bf2a
Alpha 0.1.7
0
76
240
2023-03-06T01:51:05Z
Vorlitix
3
Italian food is perfection, they make the best pastas
wikitext
text/x-wiki
OBB Alpha 0.1.7 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released July 31, 2022, however the main update features were moved to Alpha 0.1.7.1 which released on the same day. The update was released after a long hiatus, in which the hiatus left Orange Blossom Beach on 0.1.6 for 3 whole months until the release of Alpha 0.1.7. Due to this period of hiatus, the update is considered as the most overdue update to the game in its history.
==Development and Changelog==
Alpha 0.1.7, being slowly worked on during the hiatus, was the most fundamental update in the games current history. The update was supposed to have the entire game update to a new framework, in which this framework is known as [[Cramework]]. The update itself however, still ran without Cramework and was the last to do so. However, what the update did include was full controller support for Orange Blossom Beach and VR support as well. Alpha 0.1.7 also introduced a functioning citizen NPC that worked on a table with variables for ethnicitys, clothes, and other characteristics. However, this functionality wouldn't be improved upon and fully finished until [[Alpha 0.2.3]]. Alpha 0.1.7 released at 3:56 PM EST
'''Changelog:'''
*Gun system now uses UserInputService for functional controller support and VR support
*Full controller support implemented, remapping all of the functions that were in place for unfinished versions of attempted controller support attempts in previous Orange Blossom Beach updates
*Ragdolling is now activated when freefalling or tripping
*Fixed the HE Grenade tool so it damages the player now
*Added npc_citizen, which works on complete randomization through a table (however, 0.1.7's version of npc_citizen still has the full NPC function missing)
*Fixed crouching getting inverted
*'''Removed C to crawl for weapons as it was overwriting with the base crawl function that was in place beforehand -'''
''For the previous version, see [[Alpha 0.1.6]]''
''For the next subversion, see [[Alpha 0.1.7.1]]''
''For the next version, see [[Alpha 0.1.8]]''
[[Category:Versions]]
b87683833ab294d45db7cca8994f2761ea981b2d
241
240
2023-03-06T01:51:46Z
Vorlitix
3
wikitext
text/x-wiki
OBB Alpha 0.1.7 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released on July 31, 2022, however the main update features were moved to Alpha 0.1.7.1 which released on the same day. The update was released after a long hiatus, in which the hiatus left Orange Blossom Beach on 0.1.6 for 3 whole months until the release of Alpha 0.1.7. Due to this period of hiatus, the update is considered as the most overdue update to the game in its history.
==Development and Changelog==
Alpha 0.1.7, being slowly worked on during the hiatus, was the most fundamental update in the games current history. The update was supposed to have the entire game update to a new framework, in which this framework is known as [[Cramework]]. The update itself however, still ran without Cramework and was the last to do so. However, what the update did include was full controller support for Orange Blossom Beach and VR support as well. Alpha 0.1.7 also introduced a functioning citizen NPC that worked on a table with variables for ethnicitys, clothes, and other characteristics. However, this functionality wouldn't be improved upon and fully finished until [[Alpha 0.2.3]]. Alpha 0.1.7 released at 3:56 PM EST
'''Changelog:'''
*Gun system now uses UserInputService for functional controller support and VR support
*Full controller support implemented, remapping all of the functions that were in place for unfinished versions of attempted controller support attempts in previous Orange Blossom Beach updates
*Ragdolling is now activated when freefalling or tripping
*Fixed the HE Grenade tool so it damages the player now
*Added npc_citizen, which works on complete randomization through a table (however, 0.1.7's version of npc_citizen still has the full NPC function missing)
*Fixed crouching getting inverted
*'''Removed C to crawl for weapons as it was overwriting with the base crawl function that was in place beforehand -'''
''For the previous version, see [[Alpha 0.1.6]]''
''For the next subversion, see [[Alpha 0.1.7.1]]''
''For the next version, see [[Alpha 0.1.8]]''
[[Category:Versions]]
b8213c41025596ffe4b9188faf50e577b5ebe6d7
Orange Blossom Beach Filming Studio
0
34
242
69
2023-03-06T02:09:15Z
47.185.49.51
0
f
wikitext
text/x-wiki
[[Category:Map_locations]]
The Orange Blossom Beach Filming Studio is a filming studio located near the DuDu store. Stations located within the filming studio include Prism News, WOBN, and the Hat and Key talk show.
9503801a7378f59c198b674c8d5f7f2285523f48
File:Storagechestui.png
6
77
243
2023-03-06T02:11:07Z
Vorlitix
3
wikitext
text/x-wiki
huhihihiih
6232580dc508b607cb20357ef5fecee8e3b3b941
Template:Documentation
10
79
249
2023-03-28T20:00:49Z
Vorlitix
3
Created page with "{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude> <!-- Add categories to the /doc subpage --> </noinclude>"
wikitext
text/x-wiki
{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>
<!-- Add categories to the /doc subpage -->
</noinclude>
9e62b964e96c4e3d478edecbfcb3c0338ae8a276
Template:Infobox settlement
10
80
250
2023-03-28T20:01:33Z
Vorlitix
3
Created page with "<includeonly>{{main other|{{#invoke:Settlement short description|main}}|}}{{Infobox | child = {{yesno|{{{embed|}}}}} | templatestyles = Infobox settlement/styles.css | bodyclass = ib-settlement vcard <!--** names, type, and transliterations ** --> | above = <div class="fn org">{{if empty|{{{name|}}}|{{{official_name|}}}|{{PAGENAMEBASE}}}}</div> {{#if:{{{native_name|}}}|<div class="nickname ib-settlement-native" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang..."
wikitext
text/x-wiki
<includeonly>{{main other|{{#invoke:Settlement short description|main}}|}}{{Infobox
| child = {{yesno|{{{embed|}}}}}
| templatestyles = Infobox settlement/styles.css
| bodyclass = ib-settlement vcard
<!--** names, type, and transliterations ** -->
| above = <div class="fn org">{{if empty|{{{name|}}}|{{{official_name|}}}|{{PAGENAMEBASE}}}}</div>
{{#if:{{{native_name|}}}|<div class="nickname ib-settlement-native" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}}{{#if:{{{other_name|}}}|<div class="nickname ib-settlement-other-name">{{{other_name}}}</div>}}
| subheader = {{#if:{{{settlement_type|{{{type|}}}}}}|<div class="category">{{{settlement_type|{{{type}}}}}}</div>}}
| rowclass1 = mergedtoprow ib-settlement-official
| data1 = {{#if:{{{name|}}}|{{{official_name|}}}}}
<!-- ***Transliteration language 1*** -->
| rowclass2 = mergedtoprow
| header2 = {{#if:{{{translit_lang1|}}}|{{{translit_lang1}}} transcription(s)}}
| rowclass3 = {{#if:{{{translit_lang1_type1|}}}|mergedrow|mergedbottomrow}}
| label3 = • {{{translit_lang1_type}}}
| data3 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type|}}}|{{{translit_lang1_info|}}}}}}}
| rowclass4 = {{#if:{{{translit_lang1_type2|}}}|mergedrow|mergedbottomrow}}
| label4 = • {{{translit_lang1_type1}}}
| data4 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type1|}}}|{{{translit_lang1_info1|}}}}}}}
| rowclass5 = {{#if:{{{translit_lang1_type3|}}}|mergedrow|mergedbottomrow}}
| label5 = • {{{translit_lang1_type2}}}
| data5 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type2|}}}|{{{translit_lang1_info2|}}}}}}}
| rowclass6 = {{#if:{{{translit_lang1_type4|}}}|mergedrow|mergedbottomrow}}
| label6 = • {{{translit_lang1_type3}}}
| data6 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type3|}}}|{{{translit_lang1_info3|}}}}}}}
| rowclass7 = {{#if:{{{translit_lang1_type5|}}}|mergedrow|mergedbottomrow}}
| label7 = • {{{translit_lang1_type4}}}
| data7 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type4|}}}|{{{translit_lang1_info4|}}}}}}}
| rowclass8 = {{#if:{{{translit_lang1_type6|}}}|mergedrow|mergedbottomrow}}
| label8 = • {{{translit_lang1_type5}}}
| data8 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type5|}}}|{{{translit_lang1_info5|}}}}}}}
| rowclass9 = mergedbottomrow
| label9 = • {{{translit_lang1_type6}}}
| data9 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type6|}}}|{{{translit_lang1_info6|}}}}}}}
<!-- ***Transliteration language 2*** -->
| rowclass10 = mergedtoprow
| header10 = {{#if:{{{translit_lang2|}}}|{{{translit_lang2}}} transcription(s)}}
| rowclass11 = {{#if:{{{translit_lang2_type1|}}}|mergedrow|mergedbottomrow}}
| label11 = • {{{translit_lang2_type}}}
| data11 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type|}}}|{{{translit_lang2_info|}}}}}}}
| rowclass12 = {{#if:{{{translit_lang2_type2|}}}|mergedrow|mergedbottomrow}}
| label12 = • {{{translit_lang2_type1}}}
| data12 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type1|}}}|{{{translit_lang2_info1|}}}}}}}
| rowclass13 = {{#if:{{{translit_lang2_type3|}}}|mergedrow|mergedbottomrow}}
| label13 = • {{{translit_lang2_type2}}}
| data13 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type2|}}}|{{{translit_lang2_info2|}}}}}}}
| rowclass14 = {{#if:{{{translit_lang2_type4|}}}|mergedrow|mergedbottomrow}}
| label14 = • {{{translit_lang2_type3}}}
| data14 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type3|}}}|{{{translit_lang2_info3|}}}}}}}
| rowclass15 = {{#if:{{{translit_lang2_type5|}}}|mergedrow|mergedbottomrow}}
| label15 = • {{{translit_lang2_type4}}}
| data15 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type4|}}}|{{{translit_lang2_info4|}}}}}}}
| rowclass16 = {{#if:{{{translit_lang2_type6|}}}|mergedrow|mergedbottomrow}}
| label16 = • {{{translit_lang2_type5}}}
| data16 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type5|}}}|{{{translit_lang2_info5|}}}}}}}
| rowclass17 = mergedbottomrow
| label17 = • {{{translit_lang2_type6}}}
| data17 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type6|}}}|{{{translit_lang2_info6|}}}}}}}
<!-- end ** names, type, and transliterations ** -->
<!-- ***Skyline Image*** -->
| rowclass18 = mergedtoprow
| data18 = {{#if:{{{image_skyline|}}}|<!--
-->{{#invoke:InfoboxImage|InfoboxImage<!--
-->|image={{{image_skyline|}}}<!--
-->|size={{if empty|{{{image_size|}}}|{{{imagesize|}}}}}|sizedefault=250px<!--
-->|alt={{if empty|{{{image_alt|}}}|{{{alt|}}}}}<!--
-->|title={{if empty|{{{image_caption|}}}|{{{caption|}}}|{{{image_alt|}}}|{{{alt|}}}}}}}<!--
-->{{#if:{{{image_caption|}}}{{{caption|}}}|<div class="ib-settlement-caption">{{if empty|{{{image_caption|}}}|{{{caption|}}}}}</div>}} }}
<!-- ***Flag, Seal, Shield and Coat of arms*** -->
| rowclass19 = mergedtoprow
| class19 = maptable
| data19 = {{#if:{{{image_flag|}}}{{{image_seal|}}}{{{image_shield|}}}{{{image_blank_emblem|}}}{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}
|{{Infobox settlement/columns
| 1 = {{#if:{{{image_flag|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_flag}}}|size={{{flag_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|125px|100x100px}}|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{flag_alt|}}}|title=Flag of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type=Flag|link={{{flag_link|}}}|name={{{official_name}}}}}</div>}}
| 2 = {{#if:{{{image_seal|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_seal|}}}|size={{{seal_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{seal_alt|}}}|title=Official seal of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type={{#if:{{{seal_type|}}}|{{{seal_type}}}|Seal}}|link={{{seal_link|}}}|name={{{official_name}}}}}</div>}}
| 3 = {{#if:{{{image_shield|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_shield|}}}||size={{{shield_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{shield_alt|}}}|title=Coat of arms of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type=Coat of arms|link={{{shield_link|}}}|name={{{official_name}}}}}</div>}}
| 4 = {{#if:{{{image_blank_emblem|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_blank_emblem|}}}|size={{{blank_emblem_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{blank_emblem_alt|}}}|title=Official logo of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type={{#if:{{{blank_emblem_type|}}}|{{{blank_emblem_type}}}}}|link={{{blank_emblem_link|}}}|name={{{official_name}}}}}</div>}}
| 5 = {{#if:{{{image_map|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map}}}|size={{{mapsize|}}}|sizedefault=100x100px|alt={{{map_alt|}}}|title={{{map_caption|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption|}}}|<div class="ib-settlement-caption-link">{{{map_caption}}}</div>}}}}
| 0 = {{#if:{{{pushpin_map_narrow|}}}|{{#if:{{both| {{{pushpin_map|}}} | {{{coordinates|}}} }}|
{{location map|{{{pushpin_map|}}}
|border = infobox
|alt = {{{pushpin_map_alt|}}}
|caption ={{#if:{{{pushpin_map_caption_notsmall|}}}|{{{pushpin_map_caption_notsmall|}}}|{{#if:{{{pushpin_map_caption|}}}|{{{pushpin_map_caption}}}|{{#if:{{{map_caption|}}}|{{{map_caption}}}}}}}}}
|float = center
|width = {{#if:{{{pushpin_mapsize|}}}|{{{pushpin_mapsize}}}|150}}
|default_width = 250
|relief= {{{pushpin_relief|}}}
|AlternativeMap = {{{pushpin_image|}}}
|overlay_image = {{{pushpin_overlay|}}}
|coordinates = {{{coordinates|}}}
|label = {{#ifeq: {{lc: {{{pushpin_label_position|}}} }} | none | | {{#if:{{{pushpin_label|}}}|{{{pushpin_label}}}|{{#if:{{{name|}}}|{{{name}}}|{{{official_name|}}}}}}} }}
|marksize =6
|outside = {{{pushpin_outside|}}}<!-- pin is outside the map -->
|position = {{{pushpin_label_position|}}}
}}
}} }}
}} }}
<!-- ***Etymology*** -->
| rowclass20 = mergedtoprow
| data20 = {{#if:{{{etymology|}}}|Etymology: {{{etymology}}} }}
<!-- ***Nickname*** -->
| rowclass21 = {{#if:{{{etymology|}}}|mergedrow|mergedtoprow}}
| data21 = {{#if:{{{nickname|}}}{{{nicknames|}}}|<!--
-->{{Pluralize from text|parse_links=1|{{if empty|{{{nickname|}}}|{{{nicknames|}}}{{force plural}}}}|<!--
-->link={{{nickname_link|}}}|singular=Nickname|likely=Nickname(s)|plural=Nicknames}}: <!--
--><div class="ib-settlement-nickname nickname">{{if empty|{{{nickname|}}}|{{{nicknames|}}}}}</div><!--
-->{{Main other|{{Pluralize from text|parse_links=1|{{{nickname|}}}|<!--
-->likely=[[Category:Pages using infobox settlement with possible nickname list]]}}}}}}
<!-- ***Motto*** -->
| rowclass22 = {{#if:{{{etymology|}}}{{{nickname|}}}{{{nicknames|}}}|mergedrow|mergedtoprow}}
| data22 = {{#if:{{{motto|}}}{{{mottoes|}}}|<!--
-->{{Pluralize from text|{{if empty|{{{motto|}}}|{{{mottoes|}}}{{force plural}}}}|<!--
-->link={{{motto_link|}}}|singular=Motto|likely=Motto(s)|plural=Mottoes}}: <!--
--><div class="ib-settlement-nickname nickname">{{if empty|{{{motto|}}}|{{{mottoes|}}}}}</div><!--
-->{{Main other|{{Pluralize from text|{{{motto|}}}|<!--
-->likely=[[Category:Pages using infobox settlement with possible motto list]]}}}}}}
<!-- ***Anthem*** -->
| rowclass23 = {{#if:{{{etymology|}}}{{{nickname|}}}{{{nicknames|}}}{{{motto|}}}{{{mottoes|}}}|mergedrow|mergedtoprow}}
| data23 = {{#if:{{{anthem|}}}|{{#if:{{{anthem_link|}}}|[[{{{anthem_link|}}}|Anthem:]]|Anthem:}} {{{anthem}}}}}
<!-- ***Map*** -->
| rowclass24 = mergedtoprow
| data24 = {{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}||{{#if:{{{image_map|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map}}}|size={{{mapsize|}}}|sizedefault=250px|alt={{{map_alt|}}}|title={{{map_caption|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption|}}}|<div class="ib-settlement-caption">{{{map_caption}}}</div>}}
}}}}
| rowclass25 = mergedrow
| data25 = {{#if:{{{image_map1|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map1}}}|size={{{mapsize1|}}}|sizedefault=250px|alt={{{map_alt1|}}}|title={{{map_caption1|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption1|}}}|<div class="ib-settlement-caption">{{{map_caption1}}}</div>}} }}
<!-- ***Pushpin Map*** -->
| rowclass26 = mergedtoprow
| data26 = {{#if:{{{pushpin_map_narrow|}}}||{{#if:{{both| {{{pushpin_map|}}} | {{{coordinates|}}} }}|
{{location map|{{{pushpin_map|}}}
|border = infobox
|alt = {{{pushpin_map_alt|}}}
|caption ={{#if:{{{pushpin_map_caption_notsmall|}}}|{{{pushpin_map_caption_notsmall|}}}|{{#if:{{{pushpin_map_caption|}}}|{{{pushpin_map_caption}}}|{{#if:{{{map_caption|}}}|{{#if:{{{image_map|}}}||{{{map_caption}}}}}}}}}}}
|float = center
|width = {{{pushpin_mapsize|}}}
|default_width = 250
|relief= {{{pushpin_relief|}}}
|AlternativeMap = {{{pushpin_image|}}}
|overlay_image = {{{pushpin_overlay|}}}
|coordinates = {{{coordinates|}}}
|label = {{#ifeq: {{lc: {{{pushpin_label_position|}}} }} | none | | {{#if:{{{pushpin_label|}}}|{{{pushpin_label}}}|{{#if:{{{name|}}}|{{{name}}}|{{{official_name|}}}}}}} }}
|marksize =6
|outside = {{{pushpin_outside|}}}<!-- pin is outside the map -->
|position = {{{pushpin_label_position|}}}
}}
}} }}
<!-- ***Coordinates*** -->
| rowclass27 = {{#if:{{{image_map|}}}{{{image_map1|}}}{{{pushpin_map|}}}|{{#if:{{{grid_position|}}}|mergedrow|mergedbottomrow}}}}
| data27 = {{#if:{{{coordinates|}}}
|Coordinates{{#if:{{{coor_pinpoint|{{{coor_type|}}}}}}| ({{{coor_pinpoint|{{{coor_type|}}}}}})}}: {{#invoke:ISO 3166|geocoordinsert|nocat=true|1={{{coordinates|}}}|country={{{subdivision_name|}}}|subdivision1={{{subdivision_name1|}}}|subdivision2={{{subdivision_name2|}}}|subdivision3={{{subdivision_name3|}}}|type=city{{#if:{{{population_total|}}}|{{#iferror:{{#expr:{{formatnum:{{{population_total}}}|R}}+1}}||({{formatnum:{{replace|{{{population_total}}}|,|}}|R}})}}}} }}{{{coordinates_footnotes|}}} }}
| rowclass28 = {{#if:{{{image_map|}}}{{{image_map1|}}}{{{pushpin_map|}}}|mergedbottomrow|mergedrow}}
| label28 = {{if empty|{{{grid_name|}}}|Grid position}}
| data28 = {{{grid_position|}}}
<!-- ***Subdivisions*** -->
| rowclass29 = mergedtoprow
| label29 = {{{subdivision_type}}}
| data29 = {{#if:{{{subdivision_type|}}}|{{{subdivision_name|}}} }}
| rowclass30 = mergedrow
| label30 = {{{subdivision_type1}}}
| data30 = {{#if:{{{subdivision_type1|}}}|{{{subdivision_name1|}}} }}
| rowclass31 = mergedrow
| label31 = {{{subdivision_type2}}}
| data31 = {{#if:{{{subdivision_type2|}}}|{{{subdivision_name2|}}} }}
| rowclass32 = mergedrow
| label32 = {{{subdivision_type3}}}
| data32 = {{#if:{{{subdivision_type3|}}}|{{{subdivision_name3|}}} }}
| rowclass33 = mergedrow
| label33 = {{{subdivision_type4}}}
| data33 = {{#if:{{{subdivision_type4|}}}|{{{subdivision_name4|}}} }}
| rowclass34 = mergedrow
| label34 = {{{subdivision_type5}}}
| data34 = {{#if:{{{subdivision_type5|}}}|{{{subdivision_name5|}}} }}
| rowclass35 = mergedrow
| label35 = {{{subdivision_type6}}}
| data35 = {{#if:{{{subdivision_type6|}}}|{{{subdivision_name6|}}} }}
<!--***Established*** -->
| rowclass36 = mergedtoprow
| label36 = {{{established_title}}}
| data36 = {{#if:{{{established_title|}}}|{{{established_date|}}} }}
| rowclass37 = mergedrow
| label37 = {{{established_title1}}}
| data37 = {{#if:{{{established_title1|}}}|{{{established_date1|}}} }}
| rowclass38 = mergedrow
| label38 = {{{established_title2}}}
| data38 = {{#if:{{{established_title2|}}}|{{{established_date2|}}} }}
| rowclass39 = mergedrow
| label39 = {{{established_title3}}}
| data39 = {{#if:{{{established_title3|}}}|{{{established_date3|}}} }}
| rowclass40 = mergedrow
| label40 = {{{established_title4}}}
| data40 = {{#if:{{{established_title4|}}}|{{{established_date4|}}} }}
| rowclass41 = mergedrow
| label41 = {{{established_title5}}}
| data41 = {{#if:{{{established_title5|}}}|{{{established_date5|}}} }}
| rowclass42 = mergedrow
| label42 = {{{established_title6}}}
| data42 = {{#if:{{{established_title6|}}}|{{{established_date6|}}} }}
| rowclass43 = mergedrow
| label43 = {{{established_title7}}}
| data43 = {{#if:{{{established_title7|}}}|{{{established_date7|}}} }}
| rowclass44 = mergedrow
| label44 = {{{extinct_title}}}
| data44 = {{#if:{{{extinct_title|}}}|{{{extinct_date|}}} }}
| rowclass45 = mergedrow
| label45 = Founded by
| data45 = {{{founder|}}}
| rowclass46 = mergedrow
| label46 = [[Namesake|Named for]]
| data46 = {{{named_for|}}}
<!-- ***Seat of government and subdivisions within the settlement*** -->
| rowclass47 = mergedtoprow
| label47 = {{#if:{{{seat_type|}}}|{{{seat_type}}}|Seat}}
| data47 = {{{seat|}}}
| rowclass48 = mergedrow
| label48 = {{#if:{{{seat1_type|}}}|{{{seat1_type}}}|Former seat}}
| data48 = {{{seat1|}}}
| rowclass49 = mergedrow
| label49 = {{#if:{{{seat2_type|}}}|{{{seat2_type}}}|Former seat}}
| data49 = {{{seat2|}}}
| rowclass51 = {{#if:{{{seat|}}}{{{seat1|}}}{{{seat2|}}}|mergedrow|mergedtoprow}}
| label51 = {{#if:{{{parts_type|}}}|{{{parts_type}}}|Boroughs}}
| data51 = {{#if:{{{parts|}}}{{{p1|}}}
|{{#ifeq:{{{parts_style|}}}|para
|<b>{{{parts|}}}{{#if:{{both|{{{parts|}}}|{{{p1|}}}}}|: |}}</b>{{comma separated entries|{{{p1|}}}|{{{p2|}}}|{{{p3|}}}|{{{p4|}}}|{{{p5|}}}|{{{p6|}}}|{{{p7|}}}|{{{p8|}}}|{{{p9|}}}|{{{p10|}}}|{{{p11|}}}|{{{p12|}}}|{{{p13|}}}|{{{p14|}}}|{{{p15|}}}|{{{p16|}}}|{{{p17|}}}|{{{p18|}}}|{{{p19|}}}|{{{p20|}}}|{{{p21|}}}|{{{p22|}}}|{{{p23|}}}|{{{p24|}}}|{{{p25|}}}|{{{p26|}}}|{{{p27|}}}|{{{p28|}}}|{{{p29|}}}|{{{p30|}}}|{{{p31|}}}|{{{p32|}}}|{{{p33|}}}|{{{p34|}}}|{{{p35|}}}|{{{p36|}}}|{{{p37|}}}|{{{p38|}}}|{{{p39|}}}|{{{p40|}}}|{{{p41|}}}|{{{p42|}}}|{{{p43|}}}|{{{p44|}}}|{{{p45|}}}|{{{p46|}}}|{{{p47|}}}|{{{p48|}}}|{{{p49|}}}|{{{p50|}}}}}
|{{#if:{{{p1|}}}|{{Collapsible list|title={{{parts|}}}|expand={{#switch:{{{parts_style|}}}|coll=|list=y|{{#if:{{{p6|}}}||y}}}}|1={{{p1|}}}|2={{{p2|}}}|3={{{p3|}}}|4={{{p4|}}}|5={{{p5|}}}|6={{{p6|}}}|7={{{p7|}}}|8={{{p8|}}}|9={{{p9|}}}|10={{{p10|}}}|11={{{p11|}}}|12={{{p12|}}}|13={{{p13|}}}|14={{{p14|}}}|15={{{p15|}}}|16={{{p16|}}}|17={{{p17|}}}|18={{{p18|}}}|19={{{p19|}}}|20={{{p20|}}}|21={{{p21|}}}|22={{{p22|}}}|23={{{p23|}}}|24={{{p24|}}}|25={{{p25|}}}|26={{{p26|}}}|27={{{p27|}}}|28={{{p28|}}}|29={{{p29|}}}|30={{{p30|}}}|31={{{p31|}}}|32={{{p32|}}}|33={{{p33|}}}|34={{{p34|}}}|35={{{p35|}}}|36={{{p36|}}}|37={{{p37|}}}|38={{{p38|}}}|39={{{p39|}}}|40={{{p40|}}}|41={{{p41|}}}|42={{{p42|}}}|43={{{p43|}}}|44={{{p44|}}}|45={{{p45|}}}|46={{{p46|}}}|47={{{p47|}}}|48={{{p48|}}}|49={{{p49|}}}|50={{{p50|}}}}}
|{{{parts}}}
}}
}} }}
<!-- ***Government type and Leader*** -->
| rowclass52 = mergedtoprow
| header52 = {{#if:{{{government_type|}}}{{{governing_body|}}}{{{leader_name|}}}{{{leader_name1|}}}{{{leader_name2|}}}{{{leader_name3|}}}{{{leader_name4|}}}|Government<div class="ib-settlement-fn">{{{government_footnotes|}}}</div>}}
<!-- ***Government*** -->
| rowclass53 = mergedrow
| label53 = • Type
| data53 = {{{government_type|}}}
| rowclass54 = mergedrow
| label54 = • Body
| class54 = agent
| data54 = {{{governing_body|}}}
| rowclass55 = mergedrow
| label55 = • {{{leader_title}}}
| data55 = {{#if:{{{leader_title|}}}|{{{leader_name|}}} {{#if:{{{leader_party|}}}|({{Polparty|{{{subdivision_name}}}|{{{leader_party}}}}})}}}}
| rowclass56 = mergedrow
| label56 = • {{{leader_title1}}}
| data56 = {{#if:{{{leader_title1|}}}|{{{leader_name1|}}}}}
| rowclass57 = mergedrow
| label57 = • {{{leader_title2}}}
| data57 = {{#if:{{{leader_title2|}}}|{{{leader_name2|}}}}}
| rowclass58 = mergedrow
| label58 = • {{{leader_title3}}}
| data58 = {{#if:{{{leader_title3|}}}|{{{leader_name3|}}}}}
| rowclass59 = mergedrow
| label59 = • {{{leader_title4}}}
| data59 = {{#if:{{{leader_title4|}}}|{{{leader_name4|}}}}}
| rowclass60 = mergedrow
| label60 = {{{government_blank1_title}}}
| data60 = {{#if:{{{government_blank1|}}}|{{{government_blank1|}}}}}
| rowclass61 = mergedrow
| label61 = {{{government_blank2_title}}}
| data61 = {{#if:{{{government_blank2|}}}|{{{government_blank2|}}}}}
| rowclass62 = mergedrow
| label62 = {{{government_blank3_title}}}
| data62 = {{#if:{{{government_blank3|}}}|{{{government_blank3|}}}}}
| rowclass63 = mergedrow
| label63 = {{{government_blank4_title}}}
| data63 = {{#if:{{{government_blank4|}}}|{{{government_blank4|}}}}}
| rowclass64 = mergedrow
| label64 = {{{government_blank5_title}}}
| data64 = {{#if:{{{government_blank5|}}}|{{{government_blank5|}}}}}
| rowclass65 = mergedrow
| label65 = {{{government_blank6_title}}}
| data65 = {{#if:{{{government_blank6|}}}|{{{government_blank6|}}}}}
<!-- ***Geographical characteristics*** -->
<!-- ***Area*** -->
| rowclass66 = mergedtoprow
| header66 = {{#if:{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_acre|}}}{{{area_land_sq_mi|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_acre|}}}{{{area_water_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_ha|}}}{{{area_urban_acre|}}}{{{area_urban_sq_mi|}}}{{{area_rural_sq_mi|}}}{{{area_rural_ha|}}}{{{area_rural_acre|}}}{{{area_rural_km2|}}}{{{area_metro_km2|}}}{{{area_metro_ha|}}}{{{area_metro_acre|}}}{{{area_blank1_km2|}}}{{{area_blank1_ha|}}}{{{area_blank1_acre|}}}{{{area_metro_sq_mi|}}}{{{area_blank1_sq_mi|}}}
|{{#if:{{both|{{#ifeq:{{{total_type}}}| |1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}}
|<!-- displayed below -->
|Area<div class="ib-settlement-fn">{{{area_footnotes|}}}</div>
}}
}}
| rowclass67 = {{#if:{{both|{{#ifeq:{{{total_type}}}| |1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}}|mergedtoprow|mergedrow}}
| label67 = {{#if:{{both|{{#ifeq:{{{total_type}}}| |1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}}
|Area<div class="ib-settlement-fn">{{{area_footnotes|}}}</div>
| • {{#if:{{{total_type|}}}|{{{total_type}}}|{{#if:{{{area_metro_km2|}}}{{{area_metro_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_sq_mi|}}}{{{area_rural_km2|}}}{{{area_rural_sq_mi|}}}{{{population_metro|}}}{{{population_urban|}}}{{{population_rural|}}}|{{#if:{{{settlement_type|{{{type|}}}}}}|{{{settlement_type|{{{type}}}}}}|City}}|Total}}}}
}}
| data67 = {{#if:{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_total_km2|}}}
|ha ={{{area_total_ha|}}}
|acre ={{{area_total_acre|}}}
|sqmi ={{{area_total_sq_mi|}}}
|dunam={{{area_total_dunam|}}}
|link ={{#switch:{{{dunam_link|}}}||on|total=on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass68 = mergedrow
| label68 = • Land
| data68 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_acre|}}}{{{area_land_sq_mi|}}}{{{area_land_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_land_km2|}}}
|ha ={{{area_land_ha|}}}
|acre ={{{area_land_acre|}}}
|sqmi ={{{area_land_sq_mi|}}}
|dunam={{{area_land_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|land|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass69 = mergedrow
| label69 = • Water
| data69 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_acre|}}}{{{area_water_sq_mi|}}}{{{area_water_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_water_km2|}}}
|ha ={{{area_water_ha|}}}
|acre ={{{area_water_acre|}}}
|sqmi ={{{area_water_sq_mi|}}}
|dunam={{{area_water_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|water|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}} {{#if:{{{area_water_percent|}}}| {{{area_water_percent}}}%}}}}
| rowclass70 = mergedrow
| label70 = • Urban<div class="ib-settlement-fn">{{{area_urban_footnotes|}}}</div>
| data70 = {{#if:{{{area_urban_km2|}}}{{{area_urban_ha|}}}{{{area_urban_acre|}}}{{{area_urban_sq_mi|}}}{{{area_urban_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_urban_km2|}}}
|ha ={{{area_urban_ha|}}}
|acre ={{{area_urban_acre|}}}
|sqmi ={{{area_urban_sq_mi|}}}
|dunam={{{area_urban_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|urban|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass71 = mergedrow
| label71 = • Rural<div class="ib-settlement-fn">{{{area_rural_footnotes|}}}</div>
| data71 = {{#if:{{{area_rural_km2|}}}{{{area_rural_ha|}}}{{{area_rural_acre|}}}{{{area_rural_sq_mi|}}}{{{area_rural_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_rural_km2|}}}
|ha ={{{area_rural_ha|}}}
|acre ={{{area_rural_acre|}}}
|sqmi ={{{area_rural_sq_mi|}}}
|dunam={{{area_rural_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|rural|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass72 = mergedrow
| label72 = • Metro<div class="ib-settlement-fn">{{{area_metro_footnotes|}}}</div>
| data72 = {{#if:{{{area_metro_km2|}}}{{{area_metro_ha|}}}{{{area_metro_acre|}}}{{{area_metro_sq_mi|}}}{{{area_metro_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_metro_km2|}}}
|ha ={{{area_metro_ha|}}}
|acre ={{{area_metro_acre|}}}
|sqmi ={{{area_metro_sq_mi|}}}
|dunam={{{area_metro_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|metro|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
<!-- ***Area rank*** -->
| rowclass73 = mergedrow
| label73 = • Rank
| data73 = {{{area_rank|}}}
| rowclass74 = mergedrow
| label74 = • {{{area_blank1_title}}}
| data74 = {{#if:{{{area_blank1_km2|}}}{{{area_blank1_ha|}}}{{{area_blank1_acre|}}}{{{area_blank1_sq_mi|}}}{{{area_blank1_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_blank1_km2|}}}
|ha ={{{area_blank1_ha|}}}
|acre ={{{area_blank1_acre|}}}
|sqmi ={{{area_blank1_sq_mi|}}}
|dunam={{{area_blank1_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|blank1|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass75 = mergedrow
| label75 = • {{{area_blank2_title}}}
| data75 = {{#if:{{{area_blank2_km2|}}}{{{area_blank2_ha|}}}{{{area_blank2_acre|}}}{{{area_blank2_sq_mi|}}}{{{area_blank2_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_blank2_km2|}}}
|ha ={{{area_blank2_ha|}}}
|acre ={{{area_blank2_acre|}}}
|sqmi ={{{area_blank2_sq_mi|}}}
|dunam={{{area_blank2_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|blank2|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass76 = mergedrow
| label76 =
| data76 = {{{area_note|}}}
<!-- ***Dimensions*** -->
| rowclass77 = mergedtoprow
| header77 = {{#if:{{{length_km|}}}{{{length_mi|}}}{{{width_km|}}}{{{width_mi|}}}|Dimensions<div class="ib-settlement-fn">{{{dimensions_footnotes|}}}</div>}}
| rowclass78 = mergedrow
| label78 = • Length
| data78 = {{#if:{{{length_km|}}}{{{length_mi|}}}
| {{infobox_settlement/lengthdisp
|km ={{{length_km|}}}
|mi ={{{length_mi|}}}
|pref={{{unit_pref}}}
|name={{{subdivision_name}}}
}} }}
| rowclass79 = mergedrow
| label79 = • Width
| data79 = {{#if:{{{width_km|}}}{{{width_mi|}}}
|{{infobox_settlement/lengthdisp
|km ={{{width_km|}}}
|mi ={{{width_mi|}}}
|pref={{{unit_pref}}}
|name={{{subdivision_name}}}
}} }}
<!-- ***Elevation*** -->
| rowclass80 = mergedtoprow
| label80 = {{#if:{{{elevation_link|}}}|[[{{{elevation_link|}}}|Elevation]]|Elevation}}<div class="ib-settlement-fn">{{{elevation_footnotes|}}}{{#if:{{{elevation_point|}}}| ({{{elevation_point}}})}}</div>
| data80 = {{#if:{{{elevation_m|}}}{{{elevation_ft|}}}
|{{infobox_settlement/lengthdisp
|m ={{{elevation_m|}}}
|ft ={{{elevation_ft|}}}
|pref={{{unit_pref}}}
|name={{{subdivision_name}}}
}} }}
| rowclass81 = {{#if:{{{elevation_m|}}}{{{elevation_ft|}}}|mergedrow|mergedtoprow}}
| label81 = Highest elevation<div class="ib-settlement-fn">{{{elevation_max_footnotes|}}}{{#if:{{{elevation_max_point|}}}| ({{{elevation_max_point}}})}}</div>
| data81 = {{#if:{{{elevation_max_m|}}}{{{elevation_max_ft|}}}
|{{infobox_settlement/lengthdisp
|m ={{{elevation_max_m|}}}
|ft ={{{elevation_max_ft|}}}
|pref={{{unit_pref}}}
|name={{{subdivision_name}}}
}} }}
<!-- ***Elevation max rank*** -->
| rowclass82 = mergedrow
| label82 = • Rank
| data82 = {{#if:{{{elevation_max_m|}}}{{{elevation_max_ft|}}}| {{{elevation_max_rank|}}} }}
| rowclass83 = {{#if:{{{elevation_min_rank|}}}|mergedrow|mergedbottomrow}}
| label83 = Lowest elevation<div class="ib-settlement-fn">{{{elevation_min_footnotes|}}}{{#if:{{{elevation_min_point|}}}| ({{{elevation_min_point}}})}}</div>
| data83 = {{#if:{{{elevation_min_m|}}}{{{elevation_min_ft|}}}
|{{infobox_settlement/lengthdisp
|m ={{{elevation_min_m|}}}
|ft ={{{elevation_min_ft|}}}
|pref={{{unit_pref}}}
|name={{{subdivision_name}}}
}} }}
<!-- ***Elevation min rank*** -->
| rowclass84 = mergedrow
| label84 = • Rank
| data84 = {{#if:{{{elevation_min_m|}}}{{{elevation_min_ft|}}}|{{{elevation_min_rank|}}}}}
<!-- ***Population*** -->
| rowclass85 = mergedtoprow
| label85 = Population<div class="ib-settlement-fn">{{#if:{{{population_as_of|}}}|{{nbsp}}({{{population_as_of}}})}}{{{population_footnotes|}}}</div>
| data85 = {{fix comma category|{{#if:{{{population|}}}
| {{formatnum:{{replace|{{{population}}}|,|}}}}
| {{#ifeq:{{{total_type}}}|
| {{#if:{{{population_total|}}}
| {{formatnum:{{replace|{{{population_total}}}|,|}}}}
}}
}}
}}}}
| rowclass86 = mergedtoprow
| header86 = {{#if:{{{population|}}}
|
|{{#ifeq:{{{total_type}}}|
|
|{{#if:{{{population_total|}}}{{{population_urban|}}}{{{population_rural|}}}{{{population_metro|}}}{{{population_blank1|}}}{{{population_blank2|}}}{{{population_est|}}}
|Population<div class="ib-settlement-fn">{{#if:{{{population_as_of|}}}|{{nbsp}}({{{population_as_of}}})}}{{{population_footnotes|}}}</div>
}}
}}
}}
| rowclass87 = mergedrow
| label87 = • {{#if:{{{total_type|}}}|{{{total_type}}}|{{#if:{{{population_metro|}}}{{{population_urban|}}}{{{population_rural|}}}{{{area_metro_km2|}}}{{{area_metro_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_sq_mi|}}}{{{area_rural_km2|}}}{{{area_rural_sq_mi|}}}|{{#if:{{{settlement_type|{{{type|}}}}}}|{{{settlement_type|{{{type}}}}}}|City}}|Total}}}}
| data87 = {{#if:{{{population|}}}
|
|{{#ifeq:{{{total_type}}}|
|
|{{#if:{{{population_total|}}}
| {{fix comma category|{{formatnum:{{replace|{{{population_total}}}|,|}}}}}}
}}
}}
}}
| rowclass88 = mergedrow
| label88 = • Estimate <div class="ib-settlement-fn">({{{pop_est_as_of}}}){{{pop_est_footnotes|}}}</div>
| data88 = {{#if:{{{population_est|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_est}}}|,|}}}}}} }}
<!-- ***Population rank*** -->
| rowclass89 = mergedrow
| label89 = • Rank
| data89 = {{{population_rank|}}}
| rowclass90 = mergedrow
| label90 = • Density
| data90 = {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}}{{{population_total|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_km2|}}}
|/sqmi={{{population_density_sq_mi|}}}
|pop ={{{population_total|}}}
|dunam={{{area_total_dunam|}}}
|ha ={{{area_total_ha|}}}
|km2 ={{{area_total_km2|}}}
|acre ={{{area_total_acre|}}}
|sqmi ={{{area_total_sq_mi|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
<!-- ***Population density rank*** -->
| rowclass91 = mergedrow
| label91 = • Rank
| data91 = {{{population_density_rank|}}}
| rowclass92 = mergedrow
| label92 = • [[Urban area|Urban]]<div class="ib-settlement-fn">{{{population_urban_footnotes|}}}</div>
| data92 = {{#if:{{{population_urban|}}}| {{fix comma category|{{formatnum:{{replace|{{{population_urban}}}|,|}}}}}} }}
| rowclass93 = mergedrow
| label93 = • Urban density
| data93 = {{#if:{{{population_density_urban_km2|}}}{{{population_density_urban_sq_mi|}}}{{{population_urban|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_urban_km2|}}}
|/sqmi={{{population_density_urban_sq_mi|}}}
|pop ={{{population_urban|}}}
|ha ={{{area_urban_ha|}}}
|km2 ={{{area_urban_km2|}}}
|acre ={{{area_urban_acre|}}}
|sqmi ={{{area_urban_sq_mi|}}}
|dunam={{{area_urban_dunam|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass94 = mergedrow
| label94 = • [[Rural area|Rural]]<div class="ib-settlement-fn">{{{population_rural_footnotes|}}}</div>
| data94 = {{#if:{{{population_rural|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_rural}}}|,|}}}}}}}}
| rowclass95 = mergedrow
| label95 = • Rural density
| data95 = {{#if:{{{population_density_rural_km2|}}}{{{population_density_rural_sq_mi|}}}{{{population_rural|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_rural_km2|}}}
|/sqmi={{{population_density_rural_sq_mi|}}}
|pop ={{{population_rural|}}}
|ha ={{{area_rural_ha|}}}
|km2 ={{{area_rural_km2|}}}
|acre ={{{area_rural_acre|}}}
|sqmi ={{{area_rural_sq_mi|}}}
|dunam={{{area_rural_dunam|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass96 = mergedrow
| label96 = • [[Metropolitan area|Metro]]<div class="ib-settlement-fn">{{{population_metro_footnotes|}}}</div>
| data96 = {{#if:{{{population_metro|}}}| {{fix comma category|{{formatnum:{{replace|{{{population_metro}}}|,|}}}}}} }}
| rowclass97 = mergedrow
| label97 = • Metro density
| data97 = {{#if:{{{population_density_metro_km2|}}}{{{population_density_metro_sq_mi|}}}{{{population_metro|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_metro_km2|}}}
|/sqmi={{{population_density_metro_sq_mi|}}}
|pop ={{{population_metro|}}}
|ha ={{{area_metro_ha|}}}
|km2 ={{{area_metro_km2|}}}
|acre ={{{area_metro_acre|}}}
|sqmi ={{{area_metro_sq_mi|}}}
|dunam={{{area_metro_dunam|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass98 = mergedrow
| label98 = • {{{population_blank1_title|}}}<div class="ib-settlement-fn">{{{population_blank1_footnotes|}}}</div>
| data98 = {{#if:{{{population_blank1|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_blank1}}}|,|}}}}}}}}
| rowclass99 = mergedrow
| label99 = • {{#if:{{{population_blank1_title|}}}|{{{population_blank1_title}}} density|Density}}
| data99 = {{#if:{{{population_density_blank1_km2|}}}{{{population_density_blank1_sq_mi|}}}{{{population_blank1|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_blank1_km2|}}}
|/sqmi={{{population_density_blank1_sq_mi|}}}
|pop ={{{population_blank1|}}}
|ha ={{{area_blank1_ha|}}}
|km2 ={{{area_blank1_km2|}}}
|acre ={{{area_blank1_acre|}}}
|sqmi ={{{area_blank1_sq_mi|}}}
|dunam={{{area_blank1_dunam|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass100 = mergedrow
| label100 = • {{{population_blank2_title|}}}<div class="ib-settlement-fn">{{{population_blank2_footnotes|}}}</div>
| data100 = {{#if:{{{population_blank2|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_blank2}}}|,|}}}}}}}}
| rowclass101 = mergedrow
| label101 = • {{#if:{{{population_blank2_title|}}}|{{{population_blank2_title}}} density|Density}}
| data101 = {{#if:{{{population_density_blank2_km2|}}}{{{population_density_blank2_sq_mi|}}}{{{population_blank2|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_blank2_km2|}}}
|/sqmi={{{population_density_blank2_sq_mi|}}}
|pop ={{{population_blank2|}}}
|ha ={{{area_blank2_ha|}}}
|km2 ={{{area_blank2_km2|}}}
|acre ={{{area_blank2_acre|}}}
|sqmi ={{{area_blank2_sq_mi|}}}
|dunam={{{area_blank2_dunam|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass102 = mergedrow
| label102 =
| data102 = {{{population_note|}}}
| rowclass103 = mergedtoprow
| label103 = {{Pluralize from text|{{if empty|{{{population_demonym|}}}|{{{population_demonyms|}}}{{force plural}}}}|<!--
-->link=Demonym|singular=Demonym|likely=Demonym(s)|plural=Demonyms}}
| data103 = {{if empty|{{{population_demonym|}}}|{{{population_demonyms|}}}}}{{Main other|{{Pluralize from text|{{{population_demonym|}}}|likely=[[Category:Pages using infobox settlement with possible demonym list]]}}}}
<!-- ***Demographics 1*** -->
| rowclass104 = mergedtoprow
| header104 = {{#if:{{{demographics_type1|}}}
|{{{demographics_type1}}}<div class="ib-settlement-fn">{{{demographics1_footnotes|}}}</div>}}
| rowclass105 = mergedrow
| label105 = • {{{demographics1_title1}}}
| data105 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title1|}}}|{{{demographics1_info1|}}}}}}}
| rowclass106 = mergedrow
| label106 = • {{{demographics1_title2}}}
| data106 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title2|}}}|{{{demographics1_info2|}}}}}}}
| rowclass107 = mergedrow
| label107 = • {{{demographics1_title3}}}
| data107 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title3|}}}|{{{demographics1_info3|}}}}}}}
| rowclass108 = mergedrow
| label108 = • {{{demographics1_title4}}}
| data108 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title4|}}}|{{{demographics1_info4|}}}}}}}
| rowclass109 = mergedrow
| label109 = • {{{demographics1_title5}}}
| data109 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title5|}}}|{{{demographics1_info5|}}}}}}}
| rowclass110 = mergedrow
| label110 = • {{{demographics1_title6}}}
| data110 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title6|}}}|{{{demographics1_info6|}}}}}}}
| rowclass111 = mergedrow
| label111 = • {{{demographics1_title7}}}
| data111 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title7|}}}|{{{demographics1_info7|}}}}}}}
| rowclass112 = mergedrow
| label112 = • {{{demographics1_title8}}}
| data112 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title8|}}}|{{{demographics1_info8|}}}}}}}
| rowclass113 = mergedrow
| label113 = • {{{demographics1_title9}}}
| data113 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title9|}}}|{{{demographics1_info9|}}}}}}}
| rowclass114 = mergedrow
| label114 = • {{{demographics1_title10}}}
| data114 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title10|}}}|{{{demographics1_info10|}}}}}}}
<!-- ***Demographics 2*** -->
| rowclass115 = mergedtoprow
| header115 = {{#if:{{{demographics_type2|}}}
|{{{demographics_type2}}}<div class="ib-settlement-fn">{{{demographics2_footnotes|}}}</div>}}
| rowclass116 = mergedrow
| label116 = • {{{demographics2_title1}}}
| data116 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title1|}}}|{{{demographics2_info1|}}}}}}}
| rowclass117 = mergedrow
| label117 = • {{{demographics2_title2}}}
| data117 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title2|}}}|{{{demographics2_info2|}}}}}}}
| rowclass118 = mergedrow
| label118 = • {{{demographics2_title3}}}
| data118 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title3|}}}|{{{demographics2_info3|}}}}}}}
| rowclass119 = mergedrow
| label119 = • {{{demographics2_title4}}}
| data119 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title4|}}}|{{{demographics2_info4|}}}}}}}
| rowclass120 = mergedrow
| label120 = • {{{demographics2_title5}}}
| data120 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title5|}}}|{{{demographics2_info5|}}}}}}}
| rowclass121 = mergedrow
| label121 = • {{{demographics2_title6}}}
| data121 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title6|}}}|{{{demographics2_info6|}}}}}}}
| rowclass122 = mergedrow
| label122 = • {{{demographics2_title7}}}
| data122 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title7|}}}|{{{demographics2_info7|}}}}}}}
| rowclass123 = mergedrow
| label123 = • {{{demographics2_title8}}}
| data123 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title8|}}}|{{{demographics2_info8|}}}}}}}
| rowclass124 = mergedrow
| label124 = • {{{demographics2_title9}}}
| data124 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title9|}}}|{{{demographics2_info9|}}}}}}}
| rowclass125 = mergedrow
| label125 = • {{{demographics2_title10}}}
| data125 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title10|}}}|{{{demographics2_info10|}}}}}}}
<!-- ***Time Zones*** -->
| rowclass126 = mergedtoprow
| header126 = {{#if:{{{timezone1_location|}}}|{{#if:{{{timezone2|}}}|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]s|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]}}|}}
| rowclass127 = {{#if:{{{timezone1_location|}}}|mergedrow|mergedtoprow}}
| label127 = {{#if:{{{timezone1_location|}}}|{{{timezone1_location}}}|{{#if:{{{timezone2_location|}}}|{{{timezone2_location}}}|{{#if:{{{timezone2|}}}|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]s|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]}}}}}}
| data127 = {{#if:{{{utc_offset1|{{{utc_offset|}}} }}}
|[[UTC{{{utc_offset1|{{{utc_offset}}}}}}]] {{#if:{{{timezone1|{{{timezone|}}}}}}|({{{timezone1|{{{timezone}}}}}})}}
|{{{timezone1|{{{timezone|}}}}}}
}}
| rowclass128 = mergedrow
| label128 = <span class="nowrap"> • Summer ([[Daylight saving time|DST]])</span>
| data128 = {{#if:{{{utc_offset1_DST|{{{utc_offset_DST|}}}}}}
|[[UTC{{{utc_offset1_DST|{{{utc_offset_DST|}}}}}}]] {{#if:{{{timezone1_DST|{{{timezone_DST|}}}}}}|({{{timezone1_DST|{{{timezone_DST}}}}}})}}
|{{{timezone1_DST|{{{timezone_DST|}}}}}}
}}
| rowclass129 = mergedrow
| label129 = {{#if:{{{timezone2_location|}}}| {{{timezone2_location|}}}|<nowiki />}}
| data129 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}}
|{{#if:{{{utc_offset2|{{{utc_offset2|}}} }}}
|[[UTC{{{utc_offset2|{{{utc_offset2}}}}}}]] {{#if:{{{timezone2|}}}|({{{timezone2}}})}}
|{{{timezone2|}}}
}}
}}
| rowclass130 = mergedrow
| label130 = <span class="nowrap"> • Summer ([[Daylight saving time|DST]])</span>
| data130 = {{#if:{{{utc_offset2_DST|}}}|[[UTC{{{utc_offset2_DST|}}}]] {{#if:{{{timezone2_DST|}}}|({{{timezone2_DST|}}})}}
|{{{timezone2_DST|}}}
}}
| rowclass131 = mergedrow
| label131 = {{#if:{{{timezone3_location|}}}| {{{timezone3_location|}}}|<nowiki />}}
| data131 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}}
|{{#if:{{{utc_offset3|{{{utc_offset3|}}} }}}
|[[UTC{{{utc_offset3|{{{utc_offset3}}}}}}]] {{#if:{{{timezone3|}}}|({{{timezone3}}})}}
|{{{timezone3|}}}
}}
}}
| rowclass132 = mergedrow
| label132 = <span class="nowrap"> • Summer ([[Daylight saving time|DST]])</span>
| data132 = {{#if:{{{utc_offset3_DST|}}}|[[UTC{{{utc_offset3_DST|}}}]] {{#if:{{{timezone3_DST|}}}|({{{timezone3_DST|}}})}}
|{{{timezone3_DST|}}}
}}
| rowclass133 = mergedrow
| label133 = {{#if:{{{timezone4_location|}}}| {{{timezone4_location|}}}|<nowiki />}}
| data133 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}}
|{{#if:{{{utc_offset4|{{{utc_offset4|}}} }}}
|[[UTC{{{utc_offset4|{{{utc_offset4}}}}}}]] {{#if:{{{timezone4|}}}|({{{timezone4}}})}}
|{{{timezone4|}}}
}}
}}
| rowclass134 = mergedrow
| label134 = <span class="nowrap"> • Summer ([[Daylight saving time|DST]])</span>
| data134 = {{#if:{{{utc_offset4_DST|}}}|[[UTC{{{utc_offset4_DST|}}}]] {{#if:{{{timezone4_DST|}}}|({{{timezone4_DST|}}})}}
|{{{timezone4_DST|}}}
}}
| rowclass135 = mergedrow
| label135 = {{#if:{{{timezone5_location|}}}| {{{timezone5_location|}}}|<nowiki />}}
| data135 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}}
|{{#if:{{{utc_offset5|{{{utc_offset5|}}} }}}
|[[UTC{{{utc_offset5|{{{utc_offset5}}}}}}]] {{#if:{{{timezone5|}}}|({{{timezone5}}})}}
|{{{timezone5|}}}
}}
}}
| rowclass136 = mergedrow
| label136 = <span class="nowrap"> • Summer ([[Daylight saving time|DST]])</span>
| data136 = {{#if:{{{utc_offset5_DST|}}}|[[UTC{{{utc_offset5_DST|}}}]] {{#if:{{{timezone5_DST|}}}|({{{timezone5_DST|}}})}}
|{{{timezone5_DST|}}}
}}
<!-- ***Postal Code(s)*** -->
| rowclass137 = mergedtoprow
| label137 = {{{postal_code_type}}}
| class137 = adr
| data137 = {{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|<div class="postal-code">{{{postal_code}}}</div>}}}}
| rowclass138 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}|mergedbottomrow|mergedtoprow}}
| label138 = {{{postal2_code_type}}}
| class138 = adr
| data138 = {{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|<div class="postal-code">{{{postal2_code}}}</div>}} }} }}
<!-- ***Area Code(s)*** -->
| rowclass139 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}|mergedrow|mergedtoprow}}
| label139 = {{if empty|{{{area_code_type|}}}|{{Pluralize from text|any_comma=1|parse_links=1|{{if empty|{{{area_code|}}}|{{{area_codes|}}}{{force plural}}}}|<!--
-->link=Telephone numbering plan|singular=Area code|likely=Area code(s)|plural=Area codes}}}}
| data139 = {{if empty|{{{area_code|}}}|{{{area_codes|}}}}}{{#if:{{{area_code_type|}}}||{{Main other|{{Pluralize from text|any_comma=1|parse_links=1|{{{area_code|}}}|||[[Category:Pages using infobox settlement with possible area code list]]}}}}}}
<!-- Geocode-->
| rowclass140 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}|mergedrow|mergedtoprow}}
| label140 = [[Geocode]]
| class140 = nickname
| data140 = {{{geocode|}}}
<!-- ISO Code-->
| rowclass141 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}|mergedrow|mergedtoprow}}
| label141 = [[ISO 3166|ISO 3166 code]]
| class141 = nickname
| data141 = {{{iso_code|}}}
<!-- Vehicle registration plate-->
| rowclass142 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|mergedrow|mergedtoprow}}
| label142 = {{#if:{{{registration_plate_type|}}}|{{{registration_plate_type}}}|[[Vehicle registration plate|Vehicle registration]]}}
| data142 = {{{registration_plate|}}}
<!-- Other codes -->
| rowclass143 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|{{{registration_plate|}}}|mergedrow|mergedtoprow}}
| label143 = {{{code1_name|}}}
| class143 = nickname
| data143 = {{#if:{{{code1_name|}}}|{{{code1_info|}}}}}
| rowclass144 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|{{{registration_plate|}}}|{{{code1_name|}}}|mergedrow|mergedtoprow}}
| label144 = {{{code2_name|}}}
| class144 = nickname
| data144 = {{#if:{{{code2_name|}}}|{{{code2_info|}}}}}
<!-- ***Blank Fields (two sections)*** -->
| rowclass145 = mergedtoprow
| label145 = {{{blank_name_sec1|{{{blank_name|}}}}}}
| data145 = {{#if:{{{blank_name_sec1|{{{blank_name|}}}}}}|{{{blank_info_sec1|{{{blank_info|}}}}}}}}
| rowclass146 = mergedrow
| label146 = {{{blank1_name_sec1|{{{blank1_name|}}}}}}
| data146 = {{#if:{{{blank1_name_sec1|{{{blank1_name|}}}}}}|{{{blank1_info_sec1|{{{blank1_info|}}}}}}}}
| rowclass147 = mergedrow
| label147 = {{{blank2_name_sec1|{{{blank2_name|}}}}}}
| data147 = {{#if:{{{blank2_name_sec1|{{{blank2_name|}}}}}}|{{{blank2_info_sec1|{{{blank2_info|}}}}}}}}
| rowclass148 = mergedrow
| label148 = {{{blank3_name_sec1|{{{blank3_name|}}}}}}
| data148 = {{#if:{{{blank3_name_sec1|{{{blank3_name|}}}}}}|{{{blank3_info_sec1|{{{blank3_info|}}}}}}}}
| rowclass149 = mergedrow
| label149 = {{{blank4_name_sec1|{{{blank4_name|}}}}}}
| data149 = {{#if:{{{blank4_name_sec1|{{{blank4_name|}}}}}}|{{{blank4_info_sec1|{{{blank4_info|}}}}}}}}
| rowclass150 = mergedrow
| label150 = {{{blank5_name_sec1|{{{blank5_name|}}}}}}
| data150 = {{#if:{{{blank5_name_sec1|{{{blank5_name|}}}}}}|{{{blank5_info_sec1|{{{blank5_info|}}}}}}}}
| rowclass151 = mergedrow
| label151 = {{{blank6_name_sec1|{{{blank6_name|}}}}}}
| data151 = {{#if:{{{blank6_name_sec1|{{{blank6_name|}}}}}}|{{{blank6_info_sec1|{{{blank6_info|}}}}}}}}
| rowclass152 = mergedrow
| label152 = {{{blank7_name_sec1|{{{blank7_name|}}}}}}
| data152 = {{#if:{{{blank7_name_sec1|{{{blank7_name|}}}}}}|{{{blank7_info_sec1|{{{blank7_info|}}}}}}}}
| rowclass153 = mergedtoprow
| label153 = {{{blank_name_sec2}}}
| data153 = {{#if:{{{blank_name_sec2|}}}|{{{blank_info_sec2|}}}}}
| rowclass154 = mergedrow
| label154 = {{{blank1_name_sec2}}}
| data154 = {{#if:{{{blank1_name_sec2|}}}|{{{blank1_info_sec2|}}}}}
| rowclass155 = mergedrow
| label155 = {{{blank2_name_sec2}}}
| data155 = {{#if:{{{blank2_name_sec2|}}}|{{{blank2_info_sec2|}}}}}
| rowclass156 = mergedrow
| label156 = {{{blank3_name_sec2}}}
| data156 = {{#if:{{{blank3_name_sec2|}}}|{{{blank3_info_sec2|}}}}}
| rowclass157 = mergedrow
| label157 = {{{blank4_name_sec2}}}
| data157 = {{#if:{{{blank4_name_sec2|}}}|{{{blank4_info_sec2|}}}}}
| rowclass158 = mergedrow
| label158 = {{{blank5_name_sec2}}}
| data158 = {{#if:{{{blank5_name_sec2|}}}|{{{blank5_info_sec2|}}}}}
| rowclass159 = mergedrow
| label159 = {{{blank6_name_sec2}}}
| data159 = {{#if:{{{blank6_name_sec2|}}}|{{{blank6_info_sec2|}}}}}
| rowclass160 = mergedrow
| label160 = {{{blank7_name_sec2}}}
| data160 = {{#if:{{{blank7_name_sec2|}}}|{{{blank7_info_sec2|}}}}}
<!-- ***Website*** -->
| rowclass161 = mergedtoprow
| label161 = Website
| data161 = {{#if:{{{website|}}}|{{{website}}}}}
| class162 = maptable
| data162 = {{#if:{{{module|}}}|{{{module}}}}}
<!-- ***Footnotes*** -->
| belowrowclass = mergedtoprow
| below = {{{footnotes|}}}
}}<!-- Check for unknowns
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox settlement with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox settlement]] with unknown parameter "_VALUE_"|ignoreblank=y
| alt | anthem | anthem_link | area_blank1_acre | area_blank1_dunam | area_blank1_ha | area_blank1_km2 | area_blank1_sq_mi | area_blank1_title | area_blank2_acre | area_blank2_dunam | area_blank2_ha | area_blank2_km2 | area_blank2_sq_mi | area_blank2_title | area_code | area_code_type | area_codes | area_footnotes | area_land_acre | area_land_dunam | area_land_ha | area_land_km2 | area_land_sq_mi | area_metro_acre | area_metro_dunam | area_metro_footnotes | area_metro_ha | area_metro_km2 | area_metro_sq_mi | area_note | area_rank | area_rural_acre | area_rural_dunam | area_rural_footnotes | area_rural_ha | area_rural_km2 | area_rural_sq_mi | area_total_acre | area_total_dunam | area_total_ha | area_total_km2 | area_total_sq_mi | area_urban_acre | area_urban_dunam | area_urban_footnotes | area_urban_ha | area_urban_km2 | area_urban_sq_mi | area_water_acre | area_water_dunam | area_water_ha | area_water_km2 | area_water_percent | area_water_sq_mi | blank_emblem_alt | blank_emblem_link | blank_emblem_size | blank_emblem_type | blank_info | blank_info_sec1 | blank_info_sec2 | blank_name | blank_name_sec1 | blank_name_sec2 | blank1_info | blank1_info_sec1 | blank1_info_sec2 | blank1_name | blank1_name_sec1 | blank1_name_sec2 | blank2_info | blank2_info_sec1 | blank2_info_sec2 | blank2_name | blank2_name_sec1 | blank2_name_sec2 | blank3_info | blank3_info_sec1 | blank3_info_sec2 | blank3_name | blank3_name_sec1 | blank3_name_sec2 | blank4_info | blank4_info_sec1 | blank4_info_sec2 | blank4_name | blank4_name_sec1 | blank4_name_sec2 | blank5_info | blank5_info_sec1 | blank5_info_sec2 | blank5_name | blank5_name_sec1 | blank5_name_sec2 | blank6_info | blank6_info_sec1 | blank6_info_sec2 | blank6_name | blank6_name_sec1 | blank6_name_sec2 | blank7_info | blank7_info_sec1 | blank7_info_sec2 | blank7_name | blank7_name_sec1 | blank7_name_sec2 | caption | code1_info | code1_name | code2_info | code2_name | coor_pinpoint | coor_type | coordinates | coordinates_footnotes | demographics_type1 | demographics_type2 | demographics1_footnotes | demographics1_info1 | demographics1_info10 | demographics1_info2 | demographics1_info3 | demographics1_info4 | demographics1_info5 | demographics1_info6 | demographics1_info7 | demographics1_info8 | demographics1_info9 | demographics1_title1 | demographics1_title10 | demographics1_title2 | demographics1_title3 | demographics1_title4 | demographics1_title5 | demographics1_title6 | demographics1_title7 | demographics1_title8 | demographics1_title9 | demographics2_footnotes | demographics2_info1 | demographics2_info10 | demographics2_info2 | demographics2_info3 | demographics2_info4 | demographics2_info5 | demographics2_info6 | demographics2_info7 | demographics2_info8 | demographics2_info9 | demographics2_title1 | demographics2_title10 | demographics2_title2 | demographics2_title3 | demographics2_title4 | demographics2_title5 | demographics2_title6 | demographics2_title7 | demographics2_title8 | demographics2_title9 | dimensions_footnotes | dunam_link | elevation_footnotes | elevation_ft | elevation_link | elevation_m | elevation_max_footnotes | elevation_max_ft | elevation_max_m | elevation_max_point | elevation_max_rank | elevation_min_footnotes | elevation_min_ft | elevation_min_m | elevation_min_point | elevation_min_rank | elevation_point | embed | established_date | established_date1 | established_date2 | established_date3 | established_date4 | established_date5 | established_date6 | established_date7 | established_title | established_title1 | established_title2 | established_title3 | established_title4 | established_title5 | established_title6 | established_title7 | etymology | extinct_date | extinct_title | flag_alt | flag_border | flag_link | flag_size | footnotes | founder | geocode | governing_body | government_footnotes | government_type | government_blank1_title | government_blank1 | government_blank2_title | government_blank2 | government_blank2_title | government_blank3 | government_blank3_title | government_blank3 | government_blank4_title | government_blank4 | government_blank5_title | government_blank5 | government_blank6_title | government_blank6 | grid_name | grid_position | image_alt | image_blank_emblem | image_caption | image_flag | image_map | image_map1 | image_seal | image_shield | image_size | image_skyline | imagesize | iso_code | leader_name | leader_name1 | leader_name2 | leader_name3 | leader_name4 | leader_party | leader_title | leader_title1 | leader_title2 | leader_title3 | leader_title4 | length_km | length_mi | map_alt | map_alt1 | map_caption | map_caption1 | mapsize | mapsize1 | module | motto | motto_link | mottoes | name | named_for | native_name | native_name_lang | nickname | nickname_link | nicknames | official_name | other_name | p1 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p2 | p20 | p21 | p22 | p23 | p24 | p25 | p26 | p27 | p28 | p29 | p3 | p30 | p31 | p32 | p33 | p34 | p35 | p36 | p37 | p38 | p39 | p4 | p40 | p41 | p42 | p43 | p44 | p45 | p46 | p47 | p48 | p49 | p5 | p50 | p6 | p7 | p8 | p9 | parts | parts_style | parts_type | pop_est_as_of | pop_est_footnotes | population | population_as_of | population_blank1 | population_blank1_footnotes | population_blank1_title | population_blank2 | population_blank2_footnotes | population_blank2_title | population_demonym | population_demonyms | population_density_blank1_km2 | population_density_blank1_sq_mi | population_density_blank2_km2 | population_density_blank2_sq_mi | population_density_km2 | population_density_metro_km2 | population_density_metro_sq_mi | population_density_rank | population_density_rural_km2 | population_density_rural_sq_mi | population_density_sq_mi | population_density_urban_km2 | population_density_urban_sq_mi | population_est | population_footnotes | population_metro | population_metro_footnotes | population_note | population_rank | population_rural | population_rural_footnotes | population_total | population_urban | population_urban_footnotes | postal_code | postal_code_type | postal2_code | postal2_code_type | pushpin_image | pushpin_label | pushpin_label_position | pushpin_map | pushpin_map_alt | pushpin_map_caption | pushpin_map_caption_notsmall | pushpin_map_narrow | pushpin_mapsize | pushpin_outside | pushpin_overlay | pushpin_relief | registration_plate | registration_plate_type | seal_alt | seal_link | seal_size | seal_type | seat | seat_type | seat1 | seat1_type | seat2 | seat2_type | settlement_type | shield_alt | shield_link | shield_size | short_description | subdivision_name | subdivision_name1 | subdivision_name2 | subdivision_name3 | subdivision_name4 | subdivision_name5 | subdivision_name6 | subdivision_type | subdivision_type1 | subdivision_type2 | subdivision_type3 | subdivision_type4 | subdivision_type5 | subdivision_type6 | timezone | timezone_DST | timezone_link | timezone1 | timezone1_DST | timezone1_location | timezone2 | timezone2_DST | timezone2_location | timezone3 | timezone3_DST | timezone3_location | timezone4 | timezone4_DST | timezone4_location | timezone5 | timezone5_DST | timezone5_location | total_type | translit_lang1 | translit_lang1_info | translit_lang1_info1 | translit_lang1_info2 | translit_lang1_info3 | translit_lang1_info4 | translit_lang1_info5 | translit_lang1_info6 | translit_lang1_type | translit_lang1_type1 | translit_lang1_type2 | translit_lang1_type3 | translit_lang1_type4 | translit_lang1_type5 | translit_lang1_type6 | translit_lang2 | translit_lang2_info | translit_lang2_info1 | translit_lang2_info2 | translit_lang2_info3 | translit_lang2_info4 | translit_lang2_info5 | translit_lang2_info6 | translit_lang2_type | translit_lang2_type1 | translit_lang2_type2 | translit_lang2_type3 | translit_lang2_type4 | translit_lang2_type5 | translit_lang2_type6 | type | unit_pref | utc_offset | utc_offset_DST | utc_offset1 | utc_offset1_DST | utc_offset2 | utc_offset2_DST | utc_offset3 | utc_offset3_DST | utc_offset4 | utc_offset4_DST | utc_offset5 | utc_offset5_DST | website | width_km | width_mi
}}<!--
-->{{#invoke:Check for clobbered parameters|check
| template = Infobox settlement
| cat = {{main other|Category:Pages using infobox settlement with conflicting parameters}}
| population; population_total
| image_size; imagesize
| image_alt; alt
| image_caption; caption
}}<!-- Wikidata
-->{{#if:{{{coordinates_wikidata|}}}{{{wikidata|}}}
|[[Category:Pages using infobox settlement with the wikidata parameter]]
}}{{main other|<!-- Missing country
-->{{#if:{{{subdivision_name|}}}||[[Category:Pages using infobox settlement with missing country]]}}<!-- No map
-->{{#if:{{{pushpin_map|}}}{{{image_map|}}}{{{image_map1|}}}||[[Category:Pages using infobox settlement with no map]]}}<!-- Image_map1 without image_map
-->{{#if:{{{image_map1|}}}|{{#if:{{{image_map|}}}||[[Category:Pages using infobox settlement with image_map1 but not image_map]]}}}}<!-- No coordinates
-->{{#if:{{{coordinates|}}}||[[Category:Pages using infobox settlement with no coordinates]]}}<!--
-->{{#if:{{{type|}}}|{{#ifeq:{{{settlement_type|a}}}|{{{settlement_type|b}}}|[[Category:Pages using infobox settlement with ignored type]]|}}|}}<!-- Ignored type parameter
-->{{#if:{{{embed|}}}|[[Category:Pages using infobox settlement with embed]]}}
}}</includeonly><noinclude>
{{documentation}}
<!--Please add this template's categories to the /doc subpage, not here - thanks!-->
</noinclude>
f339513d69d55a6f0620634b28bdc875664aec26
Template:Infobox settlement/styles.css
10
81
251
2023-03-28T20:05:25Z
Vorlitix
3
Created page with "/* {{pp-template}} */ .ib-settlement { width: 23em; border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-settlement td, .ib-settlement th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-settlement .mergedtoprow .infobox-full-data, .ib-settlement .mergedtoprow .infobox-header, .ib-settlement .mergedtoprow .infobox-data, .ib-settlement .mergedtoprow .infobox-..."
sanitized-css
text/css
/* {{pp-template}} */
.ib-settlement {
width: 23em;
border-collapse: collapse;
line-height: 1.2em;
}
/* TODO split definitions to appropriate class names when live from HTML element */
.ib-settlement td,
.ib-settlement th {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.4em 0.6em;
}
.ib-settlement .mergedtoprow .infobox-full-data,
.ib-settlement .mergedtoprow .infobox-header,
.ib-settlement .mergedtoprow .infobox-data,
.ib-settlement .mergedtoprow .infobox-label,
.ib-settlement .mergedtoprow .infobox-below {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.2em 0.6em;
}
.ib-settlement .mergedrow .infobox-full-data,
.ib-settlement .mergedrow .infobox-data,
.ib-settlement .mergedrow .infobox-label {
border: 0;
padding: 0 0.6em 0.2em 0.6em;
}
.ib-settlement .mergedbottomrow .infobox-full-data,
.ib-settlement .mergedbottomrow .infobox-data,
.ib-settlement .mergedbottomrow .infobox-label {
border-top: 0;
border-bottom: 1px solid #a2a9b1;
padding: 0 0.6em 0.4em 0.6em;
}
.ib-settlement .maptable {
border: 0;
padding: 0;
}
.ib-settlement .infobox-header,
.ib-settlement .infobox-below {
text-align: left;
}
.ib-settlement .infobox-above {
font-size: 125%;
line-height: 1.3em;
}
.ib-settlement .infobox-subheader {
background-color: #cddeff;
font-weight: bold;
}
.ib-settlement-native {
font-weight: normal;
padding-top: 0.2em;
}
.ib-settlement-other-name {
font-size: 78%;
}
.ib-settlement-official {
font-weight: bold;
}
.ib-settlement-caption {
padding: 0.3em 0 0 0;
}
.ib-settlement-caption-link {
padding: 0.2em 0;
}
.ib-settlement-nickname {
display: inline;
}
.ib-settlement-fn {
font-weight: normal;
display: inline;
}
1711e86939ccd5e11f3f0cab3522df9f8e06bc1d
Module:Settlement short description
828
82
252
2023-03-28T20:11:47Z
Vorlitix
3
Created page with "--generates auto short description for use in infobox settlement local p = {} p.categories = "" local plain = require('Module:Plain text')._main local getArgs = require('Module:Arguments').getArgs local tableTools = require ('Module:TableTools') function p.reverseTable (init) init[1], init[3] = init[3], init[1] return init end function p.assign (args, argname, num) local val local var = {} for i = 0,num do --handle initial "subdivision_foo" without number if i..."
Scribunto
text/plain
--generates auto short description for use in infobox settlement
local p = {}
p.categories = ""
local plain = require('Module:Plain text')._main
local getArgs = require('Module:Arguments').getArgs
local tableTools = require ('Module:TableTools')
function p.reverseTable (init)
init[1], init[3] = init[3], init[1]
return init
end
function p.assign (args, argname, num)
local val
local var = {}
for i = 0,num do
--handle initial "subdivision_foo" without number
if i == 0 then
val = ""
else
val = tostring(i)
end
var[i+1] = p.validate(plain(args[argname..val]))
end
return var
end
--Display short description using {{short description}}
function p.shortdesc(text, frame)
return frame:expandTemplate{title = 'Short description', args = {text, 'noreplace'}}
end
function p.category (cattype)
local category = string.format('[[Category:Pages using infobox settlement with bad %s]]', cattype)
if category then p.categories = p.categories..category end --categorize
end
--sanity and other checks
function p.validate (parameter, cat)
if not parameter then return nil end
parameter = parameter:gsub('%b()', '') --remove things in brackets as extraneous information
:gsub('%s+', ' ') --fix possible extra spaces from previous cleanup
:gsub('^%s+', '') --trim spaces from beginning
:gsub('%s+$', '') --trim spaces from end
if parameter:match("[,;]") or not parameter:match("%a") then --must have some letters, ignore if multiple types/subdivisions
if cat then p.category (cat) end
return nil
end
if (parameter == "") then return nil end
return parameter
end
--removes redundancy like "England, United Kingdom" and fixes issues like "Foo in United States" (to "Foo in the United States")
--also used in Module:Type in location
function p.cleanupLoc (location)
if location == "" then return nil end
local replacements = {
["England, United Kingdom"] = "England",
["Scotland, United Kingdom"] = "Scotland",
["Wales, United Kingdom"] = "Wales",
["New York City, New York, United States"] = "New York City",
["^United States$"] = "the United States",
["London, United Kingdom"] = "London, England"
}
for i, v in pairs(replacements) do
location = location:gsub(i, v) --series of replacements
end
return location
end
function p.main(frame)
local categories = ""
local subdivision_types = {}
local subdivision_names = {}
local args = getArgs (frame, {parentOnly = true})
local settlement_type = p.validate(plain(args.settlement_type or args.type), "settlement type") or "Place"
local short_description = plain(args.short_description)
subdivision_types = p.assign(args, "subdivision_type", 2)
subdivision_names = p.assign(args, "subdivision_name", 2)
if short_description then
if (short_description == 'no') then
return
else
local language = mw.language.getContentLanguage()
return p.shortdesc(language:ucfirst(short_description), frame)
end
end
if not(subdivision_names[3] and
(string.find(settlement_type, '[nN]eighbo[u]?rhood') or string.find(settlement_type, '[sS]uburb'))) then
subdivision_names[3] = nil --display the third subdivision_type only if suburb or neighborhood
end
--if say "Voivodeship" is found within the subdivision_type, then specially handle
--by adding Voivodeship to the end if not already present
for x, y in ipairs (subdivision_types) do
local special_types = {
"Voivodeship"
}
for i, j in ipairs(special_types) do
if subdivision_names[x] and string.find(y, j, 1, true)
and not string.find(subdivision_names[x], j, 1, true) then
subdivision_names[x] = subdivision_names[x].." "..j
end
end
end
for x, y in ipairs (subdivision_names) do
if y then
if string.find(settlement_type, y, 1, true) then --if the subdivision is found within the settlement type
subdivision_names[x] = nil --don't display redundancy
p.category ("settlement type")
end
if y == mw.title.getCurrentTitle().text then --if the title is the same as one of the subdivision_names
subdivision_names[x] = nil --don't display redundancy
end
end
end
local location = table.concat(tableTools.compressSparseArray(p.reverseTable(subdivision_names)), ', ')
location = p.cleanupLoc (location)
if location then location = " in " .. location else location = "" end
local language = mw.language.getContentLanguage()
return p.shortdesc(language:ucfirst(settlement_type..location), frame)..p.categories
end
return p
f2f1adada5fd2b30e158e56b9f05102571b2a17f
Module:Infobox
828
83
253
2023-03-28T20:12:38Z
Vorlitix
3
Created page with "local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s'..."
Scribunto
text/plain
local p = {}
local args = {}
local origArgs = {}
local root
local empty_row_categories = {}
local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]'
local has_rows = false
local lists = {
plainlist_t = {
patterns = {
'^plainlist$',
'%splainlist$',
'^plainlist%s',
'%splainlist%s'
},
found = false,
styles = 'Plainlist/styles.css'
},
hlist_t = {
patterns = {
'^hlist$',
'%shlist$',
'^hlist%s',
'%shlist%s'
},
found = false,
styles = 'Hlist/styles.css'
}
}
local function has_list_class(args_to_check)
for _, list in pairs(lists) do
if not list.found then
for _, arg in pairs(args_to_check) do
for _, pattern in ipairs(list.patterns) do
if mw.ustring.find(arg or '', pattern) then
list.found = true
break
end
end
if list.found then break end
end
end
end
end
local function fixChildBoxes(sval, tt)
local function notempty( s ) return s and s:match( '%S' ) end
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
-- start moving templatestyles and categories inside of table rows
local slast = ''
while slast ~= s do
slast = s
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1')
end
-- end moving templatestyles and categories inside of table rows
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' ..
subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' ..
subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
-- the next two lines add a newline at the end of lists for the PHP parser
-- [[Special:Diff/849054481]]
-- remove when [[:phab:T191516]] is fixed or OBE
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
return s
else
return sval
end
end
-- Cleans empty tables
local function cleanInfobox()
root = tostring(root)
if has_rows == false then
root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '')
end
end
-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
local function addRow(rowArgs)
if rowArgs.header and rowArgs.header ~= '_BLANK_' then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass })
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '2')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
-- @deprecated next; target .infobox-<name> .infobox-header
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
if rowArgs.data then
root:wikitext(
'[[Category:Pages using infobox templates with ignored data cells]]'
)
end
elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class })
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
-- @deprecated next; target .infobox-<name> .infobox-label
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
end
local dataCell = row:tag('td')
dataCell
:attr('colspan', not rowArgs.label and '2' or nil)
:addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox(-full)-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
else
table.insert(empty_row_categories, rowArgs.data or '')
end
end
local function renderTitle()
if not args.title then return end
has_rows = true
has_list_class({args.titleclass})
root
:tag('caption')
:addClass('infobox-title')
:addClass(args.titleclass)
-- @deprecated next; target .infobox-<name> .infobox-title
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
has_rows = true
has_list_class({ args.aboveclass })
root
:tag('tr')
:tag('th')
:attr('colspan', '2')
:addClass('infobox-above')
:addClass(args.aboveclass)
-- @deprecated next; target .infobox-<name> .infobox-above
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
has_rows = true
has_list_class({ args.belowclass })
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-below')
:addClass(args.belowclass)
-- @deprecated next; target .infobox-<name> .infobox-below
:cssText(args.belowstyle)
:wikitext(fixChildBoxes(args.below,'td'))
end
local function addSubheaderRow(subheaderArgs)
if subheaderArgs.data and
subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:wikitext(fixChildBoxes(subheaderArgs.data, 'td'))
else
table.insert(empty_row_categories, subheaderArgs.data or '')
end
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader')
for k, num in ipairs(subheadernums) do
addSubheaderRow({
data = args['subheader' .. tostring(num)],
-- @deprecated next; target .infobox-<name> .infobox-subheader
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function addImageRow(imageArgs)
if imageArgs.data and
imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ imageArgs.rowclass, imageArgs.class })
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:wikitext(fixChildBoxes(imageArgs.data, 'td'))
else
table.insert(empty_row_categories, imageArgs.data or '')
end
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:addClass('infobox-caption')
-- @deprecated next; target .infobox-<name> .infobox-caption
:cssText(args.captionstyle)
:wikitext(caption)
end
addImageRow({
data = tostring(data),
-- @deprecated next; target .infobox-<name> .infobox-image
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
-- When autoheaders are turned on, preprocesses the rows
local function preprocessRows()
if not args.autoheaders then return end
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
local lastheader
for k, num in ipairs(rownums) do
if args['header' .. tostring(num)] then
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
lastheader = num
elseif args['data' .. tostring(num)] and
args['data' .. tostring(num)]:gsub(
category_in_empty_row_pattern, ''
):match('^%S') then
local data = args['data' .. tostring(num)]
if data:gsub(category_in_empty_row_pattern, ''):match('%S') then
lastheader = nil
end
end
end
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
end
-- Gets the union of the header and data argument numbers,
-- and renders them all in order
local function renderRows()
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
-- @deprecated next; target .infobox-<name> rowclass
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)]
})
end
end
local function renderNavBar()
if not args.name then return end
has_rows = true
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-navbar')
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(require('Module:Italic title')._main({}))
end
end
-- Categories in otherwise empty rows are collected in empty_row_categories.
-- This function adds them to the module output. It is not affected by
-- args.decat because this module should not prevent module-external categories
-- from rendering.
local function renderEmptyRowCategories()
for _, s in ipairs(empty_row_categories) do
root:wikitext(s)
end
end
-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
if args.decat == 'yes' then return end
if args.child == 'yes' then
if args.title then
root:wikitext(
'[[Category:Pages using embedded infobox templates with the title parameter]]'
)
end
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
end
end
--[=[
Loads the templatestyles for the infobox.
TODO: FINISH loading base templatestyles here rather than in
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables.
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).
When we do this we should clean up the inline CSS below too.
Will have to do some bizarre conversion category like with sidebar.
]=]
local function loadTemplateStyles()
local frame = mw.getCurrentFrame()
local hlist_templatestyles = ''
if lists.hlist_t.found then
hlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.hlist_t.styles }
}
end
local plainlist_templatestyles = ''
if lists.plainlist_t.found then
plainlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.plainlist_t.styles }
}
end
-- See function description
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
}
local templatestyles = ''
if args['templatestyles'] then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
-- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because the rows of interest invoking
-- each class may not be on a specific page
hlist_templatestyles,
plainlist_templatestyles,
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles
})
end
-- common functions between the child and non child cases
local function structure_infobox_common()
renderSubheaders()
renderImages()
preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
renderEmptyRowCategories()
renderTrackingCategories()
cleanInfobox()
end
-- Specify the overall layout of the infobox, with special settings if the
-- infobox is used as a 'child' inside another infobox.
local function _infobox()
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox')
:addClass(args.bodyclass)
-- @deprecated next; target .infobox-<name>
:cssText(args.bodystyle)
has_list_class({ args.bodyclass })
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
structure_infobox_common()
return loadTemplateStyles() .. root
end
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
local function preprocessSingleArg(argName)
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
-- Assign the parameters with the given prefixes to the args table, in order, in
-- batches of the step size specified. This is to prevent references etc. from
-- appearing in the wrong order. The prefixTable should be an array containing
-- tables, each of which has two possible fields, a "prefix" string and a
-- "depend" table. The function always parses parameters containing the "prefix"
-- string, but only parses parameters in the "depend" table if the prefix
-- parameter is present and non-blank.
local function preprocessArgs(prefixTable, step)
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or
(v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present
-- and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 1 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i)
if origArgs[prefixArgName] then
-- Do another loop if any arguments are found, even blank ones.
moreArgumentsExist = true
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present
-- and not blank, or we are processing "prefix1" and "prefix" is
-- present and not blank, and if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i)
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so
-- that references etc. will display in the expected places. Parameters that
-- depend on another parameter are only processed if that parameter is present,
-- to avoid phantom references appearing in article reference lists.
local function parseDataParameters()
preprocessSingleArg('autoheaders')
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
-- different behaviour for italics if blank or absent
args['italic title'] = origArgs['italic title']
preprocessSingleArg('decat')
preprocessSingleArg('templatestyles')
preprocessSingleArg('child templatestyles')
preprocessSingleArg('grandchild templatestyles')
end
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
function p.infobox(frame)
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
-- For calling via #invoke within a template
function p.infoboxTemplate(frame)
origArgs = {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
return p
0ddb7e5c8426d67cd589b710efb9912ddfb67fea
Module:InfoboxImage
828
84
254
2023-03-28T20:13:53Z
Vorlitix
3
Created page with "-- Inputs: -- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link -- page - page to display for multipage images (DjVu) -- size - size to display the image -- maxsize - maximum size for image -- sizedefault - default size to display the image if size param is blank -- alt - alt text for image -- title - title text for image -- border - set to yes if border -- center - set to yes, if th..."
Scribunto
text/plain
-- Inputs:
-- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link
-- page - page to display for multipage images (DjVu)
-- size - size to display the image
-- maxsize - maximum size for image
-- sizedefault - default size to display the image if size param is blank
-- alt - alt text for image
-- title - title text for image
-- border - set to yes if border
-- center - set to yes, if the image has to be centered
-- upright - upright image param
-- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it
-- link - page to visit when clicking on image
-- class - HTML classes to add to the image
-- Outputs:
-- Formatted image.
-- More details available at the "Module:InfoboxImage/doc" page
local i = {};
local placeholder_image = {
"Blue - Replace this image female.svg",
"Blue - Replace this image male.svg",
"Female no free image yet.png",
"Flag of None (square).svg",
"Flag of None.svg",
"Flag of.svg",
"Green - Replace this image female.svg",
"Green - Replace this image male.svg",
"Image is needed female.svg",
"Image is needed male.svg",
"Location map of None.svg",
"Male no free image yet.png",
"Missing flag.png",
"No flag.svg",
"No free portrait.svg",
"No portrait (female).svg",
"No portrait (male).svg",
"Red - Replace this image female.svg",
"Red - Replace this image male.svg",
"Replace this image female (blue).svg",
"Replace this image female.svg",
"Replace this image male (blue).svg",
"Replace this image male.svg",
"Silver - Replace this image female.svg",
"Silver - Replace this image male.svg",
"Replace this image.svg",
"Cricket no pic.png",
"CarersLogo.gif",
"Diagram Needed.svg",
"Example.jpg",
"Image placeholder.png",
"No male portrait.svg",
"Nocover-upload.png",
"NoDVDcover copy.png",
"Noribbon.svg",
"No portrait-BFD-test.svg",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Sin bandera.svg",
"Sin escudo.svg",
"Replace this image - temple.png",
"Replace this image butterfly.png",
"Replace this image.svg",
"Replace this image1.svg",
"Resolution angle.png",
"Image-No portrait-text-BFD-test.svg",
"Insert image here.svg",
"No image available.png",
"NO IMAGE YET square.png",
"NO IMAGE YET.png",
"No Photo Available.svg",
"No Screenshot.svg",
"No-image-available.jpg",
"Null.png",
"PictureNeeded.gif",
"Place holder.jpg",
"Unbenannt.JPG",
"UploadACopyrightFreeImage.svg",
"UploadAnImage.gif",
"UploadAnImage.svg",
"UploadAnImageShort.svg",
"CarersLogo.gif",
"Diagram Needed.svg",
"No male portrait.svg",
"NoDVDcover copy.png",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Noimage.gif",
}
function i.IsPlaceholder(image)
-- change underscores to spaces
image = mw.ustring.gsub(image, "_", " ");
assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil')
-- if image starts with [[ then remove that and anything after |
if mw.ustring.sub(image,1,2) == "[[" then
image = mw.ustring.sub(image,3);
image = mw.ustring.gsub(image, "([^|]*)|.*", "%1");
assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil')
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
-- capitalise first letter
image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);
for i,j in pairs(placeholder_image) do
if image == j then
return true
end
end
return false
end
function i.InfoboxImage(frame)
local image = frame.args["image"];
if image == "" or image == nil then
return "";
end
if image == " " then
return image;
end
if frame.args["suppressplaceholder"] ~= "no" then
if i.IsPlaceholder(image) == true then
return "";
end
end
if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then
return "";
end
if mw.ustring.sub(image,1,2) == "[[" then
-- search for thumbnail images and add to tracking cat if found
local cat = "";
if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
cat = "[[Category:Pages using infoboxes with thumbnail images]]";
end
return image .. cat;
elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then
return image;
elseif mw.ustring.sub(image,1,1) == "<" then
return image;
elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then
-- Found strip marker at begining, so pass don't process at all
return image;
elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then
-- Found strip marker at begining, so pass don't process at all
return image;
else
local result = "";
local page = frame.args["page"];
local size = frame.args["size"];
local maxsize = frame.args["maxsize"];
local sizedefault = frame.args["sizedefault"];
local alt = frame.args["alt"];
local link = frame.args["link"];
local title = frame.args["title"];
local border = frame.args["border"];
local upright = frame.args["upright"] or "";
local thumbtime = frame.args["thumbtime"] or "";
local center = frame.args["center"];
local class = frame.args["class"];
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
if maxsize ~= "" and maxsize ~= nil then
-- if no sizedefault then set to maxsize
if sizedefault == "" or sizedefault == nil then
sizedefault = maxsize
end
-- check to see if size bigger than maxsize
if size ~= "" and size ~= nil then
local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
if sizenumber>maxsizenumber and maxsizenumber>0 then
size = maxsize;
end
end
end
-- add px to size if just a number
if (tonumber(size) or 0) > 0 then
size = size .. "px";
end
-- add px to sizedefault if just a number
if (tonumber(sizedefault) or 0) > 0 then
sizedefault = sizedefault .. "px";
end
result = "[[File:" .. image;
if page ~= "" and page ~= nil then
result = result .. "|page=" .. page;
end
if size ~= "" and size ~= nil then
result = result .. "|" .. size;
elseif sizedefault ~= "" and sizedefault ~= nil then
result = result .. "|" .. sizedefault;
else
result = result .. "|frameless";
end
if center == "yes" then
result = result .. "|center"
end
if alt ~= "" and alt ~= nil then
result = result .. "|alt=" .. alt;
end
if link ~= "" and link ~= nil then
result = result .. "|link=" .. link;
end
if border == "yes" then
result = result .. "|border";
end
if upright == "yes" then
result = result .. "|upright";
elseif upright ~= "" then
result = result .. "|upright=" .. upright;
end
if thumbtime ~= "" then
result = result .. "|thumbtime=" .. thumbtime;
end
if class ~= nil and class ~= "" then
result = result .. "|class=" .. class;
end
-- if alt value is a keyword then do not use as a description
if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then
alt = nil;
end
if title ~= "" and title ~= nil then
-- does title param contain any templatestyles? If yes then set to blank.
if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then
title = nil;
end
end
if title ~= "" and title ~= nil then
result = result .. "|" .. title;
end
result = result .. "]]";
return result;
end
end
return i;
0ee5fe75ba239fc5c9cedc81ca11bdc0be068542
Alpha 0.0.1
0
48
255
203
2023-03-29T01:07:24Z
Hatmanthehat
2
wikitext
text/x-wiki
OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:16 PM, EST a few minutes before [[Alpha 0.0.2]] and a few hours before [[Alpha 0.0.3]]. This update was published after the game was first publicized 3 days ago on March 18, 2022.
== Development and Changelog ==
''For the Pre-OBB era, see [[Neighborhood RP]]''
The games map at the time was just a simple map featuring a [[Taco Ball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions.
=== Changelog: ===
* Fixed tools that relied on touching players.
''For the previous version, see [[Neighborhood RP]]
''For the next version, see [[Alpha 0.0.2]]''
[[Category:Versions]]
bf2810ab2ea7defae78fee0d2f2aaddf2940c94f
Module:Weather box/doc
828
86
257
2023-03-30T20:02:59Z
Vorlitix
3
Created page with "{{high use| 18000 }} {{module rating|release}} {{Module rating|protected}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> == Usage == This module is used by {{tl|Weather box}}. {{#invoke:{{BASEPAGENAME}}|''function_name''}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go here and interwikis go in Wikidata. --> }}</includeonly> {{Weather box{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}} |metric first = Y |single li..."
wikitext
text/x-wiki
{{high use| 18000 }}
{{module rating|release}}
{{Module rating|protected}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
== Usage ==
This module is used by {{tl|Weather box}}.
{{#invoke:{{BASEPAGENAME}}|''function_name''}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
<!-- Categories go here and interwikis go in Wikidata. -->
}}</includeonly>
{{Weather box{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}}
|metric first = Y
|single line = Y
|collapsed =
|location = [[Edmonton City Centre (Blatchford Field) Airport]] (1981−2010)
|Jan record high C = 11.7
|Feb record high C = 14.0
|Mar record high C = 23.9
|Apr record high C = 31.1
|May record high C = 32.3
|Jun record high C = 34.9
|Jul record high C = 34.6
|Aug record high C = 34.5
|Sep record high C = 33.9
|Oct record high C = 28.6
|Nov record high C = 21.7
|Dec record high C = 16.7
|year record high C = 34.9
|Jan high C = -6.0
|Feb high C = -2.7
|Mar high C = 2.2
|Apr high C = 11.2
|May high C = 17.5
|Jun high C = 21.0
|Jul high C = 23.1
|Aug high C = 22.6
|Sep high C = 17.1
|Oct high C = 10.4
|Nov high C = 0.0
|Dec high C = -4.5
|year high C = 9.3
|Jan mean C = -10.4
|Feb mean C = -7.6
|Mar mean C = -2.5
|Apr mean C = 5.4
|May mean C = 11.5
|Jun mean C = 15.5
|Jul mean C = 17.7
|Aug mean C = 16.9
|Sep mean C = 11.4
|Oct mean C = 5.1
|Nov mean C = -4.1
|Dec mean C = -8.8
|year mean C = 4.2
|Jan low C = -14.8
|Feb low C = -12.5
|Mar low C = -7.2
|Apr low C = -0.5
|May low C = 5.4
|Jun low C = 9.9
|Jul low C = 12.3
|Aug low C = 11.3
|Sep low C = 5.8
|Oct low C = -0.2
|Nov low C = -8.2
|Dec low C = -13.1
|year low C = -1.0
|Jan record low C = -44.4
|Feb record low C = -46.1
|Mar record low C = -36.1
|Apr record low C = -25.6
|May record low C = -12.2
|Jun record low C = -1.1
|Jul record low C = 0.6
|Aug record low C = -1.2
|Sep record low C = -11.7
|Oct record low C = -25.0
|Nov record low C = -34.1
|Dec record low C = -48.3
|year record low C = -48.3
|Jan chill = -52.8
|Feb chill = -50.7
|Mar chill = -44.6
|Apr chill = -37.5
|May chill = -14.5
|Jun chill = 0.0
|Jul chill = 0.0
|Aug chill = -3.7
|Sep chill = -13.3
|Oct chill = -34.3
|Nov chill = -50.2
|Dec chill = -55.5
|year chill = -55.5
|precipitation colour = green
|Jan precipitation mm = 21.7
|Feb precipitation mm = 12.0
|Mar precipitation mm = 15.8
|Apr precipitation mm = 28.8
|May precipitation mm = 46.1
|Jun precipitation mm = 77.5
|Jul precipitation mm = 93.8
|Aug precipitation mm = 61.9
|Sep precipitation mm = 43.5
|Oct precipitation mm = 21.7
|Nov precipitation mm = 18.0
|Dec precipitation mm = 15.0
|year precipitation mm = 455.7
|rain colour = green
|Jan rain mm = 1.3
|Feb rain mm = 0.76
|Mar rain mm = 1.7
|Apr rain mm = 14.5
|May rain mm = 40.7
|Jun rain mm = 77.5
|Jul rain mm = 93.8
|Aug rain mm = 61.8
|Sep rain mm = 42.4
|Oct rain mm = 10.9
|Nov rain mm = 1.6
|Dec rain mm = 0.73
|year rain mm = 347.8
|snow colour = green
|Jan snow cm = 24.5
|Feb snow cm = 13.4
|Mar snow cm = 17.4
|Apr snow cm = 15.3
|May snow cm = 4.9
|Jun snow cm = 0.0
|Jul snow cm = 0.0
|Aug snow cm = 0.0
|Sep snow cm = 1.0
|Oct snow cm = 11.6
|Nov snow cm = 19.1
|Dec snow cm = 16.4
|year snow cm = 123.5
|Jan humidity = 65.2
|Feb humidity = 61.2
|Mar humidity = 56.5
|Apr humidity = 42.9
|May humidity = 40.4
|Jun humidity = 48.2
|Jul humidity = 52.6
|Aug humidity = 51.4
|Sep humidity = 50.1
|Oct humidity = 50.5
|Nov humidity = 64.7
|Dec humidity = 65.4
|year humidity = 54.1
|unit precipitation days = 0.2 mm
|Jan precipitation days = 11.0
|Feb precipitation days = 7.9
|Mar precipitation days = 8.3
|Apr precipitation days = 8.8
|May precipitation days = 11.0
|Jun precipitation days = 14.2
|Jul precipitation days = 14.6
|Aug precipitation days = 11.1
|Sep precipitation days = 9.8
|Oct precipitation days = 8.0
|Nov precipitation days = 8.8
|Dec precipitation days = 9.4
|year precipitation days = 122.9
|unit rain days = 0.2 mm
|Jan rain days = 1.1
|Feb rain days = 0.83
|Mar rain days = 1.4
|Apr rain days = 5.9
|May rain days = 10.5
|Jun rain days = 14.2
|Jul rain days = 14.6
|Aug rain days = 11.1
|Sep rain days = 9.6
|Oct rain days = 5.6
|Nov rain days = 1.5
|Dec rain days = 0.75
|year rain days = 77.3
|unit snow days = 0.2 cm
|Jan snow days = 10.7
|Feb snow days = 7.7
|Mar snow days = 7.7
|Apr snow days = 4.2
|May snow days = 1.2
|Jun snow days = 0.0
|Jul snow days = 0.0
|Aug snow days = 0.0
|Sep snow days = 0.50
|Oct snow days = 3.2
|Nov snow days = 7.9
|Dec snow days = 9.3
|year snow days = 52.4
|Jan sun = 100.8
|Feb sun = 121.7
|Mar sun = 176.3
|Apr sun = 244.2
|May sun = 279.9
|Jun sun = 285.9
|Jul sun = 307.5
|Aug sun = 282.3
|Sep sun = 192.7
|Oct sun = 170.8
|Nov sun = 98.4
|Dec sun = 84.5
|year sun = 2344.8
|Jan percentsun = 40.2
|Feb percentsun = 44.1
|Mar percentsun = 48.1
|Apr percentsun = 58.2
|May percentsun = 56.8
|Jun percentsun = 56.2
|Jul percentsun = 60.2
|Aug percentsun = 61.5
|Sep percentsun = 50.4
|Oct percentsun = 52.0
|Nov percentsun = 37.8
|Dec percentsun = 36.0
|year percentsun = 50.1
|Jan uv = 0
|Feb uv = 1
|Mar uv = 3
|Apr uv = 5
|May uv = 7
|Jun uv = 9
|Jul uv = 11
|Aug uv = 9
|Sep uv = 7
|Oct uv = 5
|Nov uv = 3
|Dec uv = 1
|year uv =
|source 1 = [[Environment Canada]],<ref name="CCN" >{{cite web |title=Edmonton City Centre Airport |work=Canadian Climate Normals 1981−2010 |publisher=Environment Canada |date=August 19, 2013 |url=http://climate.weather.gc.ca/climate_normals/results_1981_2010_e.html?stnID=1867&lang=e&dCode=0&province=ALTA&provBut=Go&month1=0&month2=12 |accessdate=September 10, 2013}}</ref> Weather Atlas<ref>{{cite web |url=https://www.weather-ca.com/en/canada/edmonton-climate |title=Monthly weather forecast and Climate: Edmonton, Canada |work=Weather Atlas |accessdate=March 12, 2019}}</ref>
}}
{{Template reference list}}
f34c787384024e98965bbc70df17103dcb7c6e96
Module:Weather box/row
828
87
258
2023-03-30T20:04:20Z
Vorlitix
3
Created page with "local math_mod = require('Module:Math') local traceText local Value Value = { lang = mw.getContentLanguage(), getDisplay = function (self, second) if not self:isValid() then return nil end local display = self.string if display == 'trace' then if second then -- If a cell displays "cm (inch)", show "trace" not "trace (trace)". return nil end return traceText or 'trace' end if math.abs(self.number) >= 1000 then display = self.lang:form..."
Scribunto
text/plain
local math_mod = require('Module:Math')
local traceText
local Value
Value = {
lang = mw.getContentLanguage(),
getDisplay = function (self, second)
if not self:isValid() then
return nil
end
local display = self.string
if display == 'trace' then
if second then
-- If a cell displays "cm (inch)", show "trace" not "trace (trace)".
return nil
end
return traceText or 'trace'
end
if math.abs(self.number) >= 1000 then
display = self.lang:formatNum(math.abs(self.number))
if self.number < 0 then
display = '−' .. display
end
elseif self.number < 0 then
display = '−' .. display:sub(2)
end
return display
end,
getPrecision = function (self)
local result = rawget(self, 'precision')
if not result then
if self:isValid() then
result = math.max(0, math_mod._precision(self.string))
else
result = 0
end
rawset(self, 'precision', result)
end
return result
end,
isValid = function (self)
return self.number ~= nil and self.number ~= -9999
end,
new = function (v)
local val, str, precision
if type(v) == 'string' then
if v == 'trace' then
val, str, precision = 0, 'trace', 0
else
val, str = math_mod._cleanNumber(v)
end
elseif type(v) == 'number' then
val, str = v, tostring(v)
end
if not val then
val, str = -9999, ''
end
return setmetatable({
number = val,
string = str,
precision = precision,
}, Value)
end,
converts = {
in2cm = { factor = 2.54 },
in2mm = { factor = 25.4 },
cm2in = { factor = 1/2.54, p2max = 1 },
mm2in = { factor = 1/25.4, p2max = 0 },
},
setConvert = function (self, invalue, units)
-- Use method modified from [[Module:Convert]] to determine precision.
if invalue.string == 'trace' then
self.number, self.string, self.precision = 0, 'trace', 0
return
end
local convert = self.converts[units] or error('Unknown units')
local outnum = invalue.number * convert.factor
local precision = invalue:getPrecision()
if outnum > 0 then
local adjust = math.log10(1/convert.factor) + math.log10(2)
local p1 = math.floor(precision + adjust)
local p2 = 1 - math.floor(math.log10(outnum))
if convert.p2max then
p2 = math.min(p2, convert.p2max)
end
precision = math.max(p1, p2)
end
self:setNumberRounded(outnum, precision)
end,
setNumberRounded = function (self, number, precision)
if precision > 2 then
precision = 2
end
self.number = math_mod._round(number, precision)
if precision < 0 then
self.string = tostring(self.number)
else
local fmt = '%.' .. string.format('%d', precision) .. 'f'
self.string = string.format(fmt, self.number)
end
end,
}
Value.__index = Value
local function checkFlag(flag, default)
if flag == nil then
return default
elseif type(flag) == 'boolean' then
return flag
elseif type(flag) == 'string' then
flag = flag:lower()
if flag == '0' or flag == 'false' or
flag == '' or flag == 'no' or
flag == 'n' then
return false
else
return true
end
else
return error('Flag type not valid')
end
end
local function makeLine(label, first_values, second_values, color_values)
local result = {'|- style="text-align: center;"\n! scope="row" style="height: 16px;" | ', label, "\n"}
for i = 1, 13 do
local color_str = color_values[i]
if i == 13 then
table.insert(result, table.concat( {'|style="', color_str, ' border-left-width:medium" | '} ))
else
table.insert(result, table.concat( {'|style="', color_str, '" | '} ))
end
local display = first_values[i]:getDisplay()
if display then
table.insert(result, display)
if second_values ~= nil then
display = second_values[i]:getDisplay(true)
if display then
table.insert(result, "<br />(" .. display .. ")")
end
end
else
table.insert(result, '—')
end
table.insert(result, "\n")
end
return table.concat(result)
end
local function getInputs(args, group_name, suffix, include_space)
local month_names = { 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'year' }
local str
local values = {}
if suffix == nil then
for i, mon in ipairs(month_names) do
if include_space then
str = args[ mon .. ' ' .. group_name ] or ''
else
str = args[ mon .. group_name ] or ''
end
values[i] = Value.new(str)
end
else
for i, mon in ipairs(month_names) do
local value, updated
for var, suf in ipairs(suffix) do
if include_space then
str = args[ mon .. ' ' .. group_name .. ' ' .. suf ]
else
str = args[ mon .. group_name .. ' ' .. suf ]
end
if str ~= nil and str ~= '' then
value = Value.new(str)
value.variant = var
updated = true
break
end
end
if not updated then
value = Value.new()
value.variant = 0
end
values[i] = value
end
end
return values
end
local function getAnnualValue(values, mode)
if mode == 'avg' or mode == 'sum' then
local total = 0
local p1, p2, variant
p1 = 0
for i = 1, 12 do
if not values[i]:isValid() then
return Value.new()
end
if not variant then
local var = values[i].variant
if var and var ~= 0 then
variant = var
end
end
p2 = values[i]:getPrecision()
if p2 > p1 then
p1 = p2
end
total = total + values[i].number
end
local value = Value.new(total)
if mode == 'avg' then
value:setNumberRounded(total / 12, p1)
end
value.variant = variant
return value
elseif mode == 'min' then
local target
for i = 1, 12 do
if values[i]:isValid() then
if target == nil or values[i].number < target.number then
target = values[i]
end
end
end
return target or Value.new()
elseif mode == 'max' then
local target
for i = 1, 12 do
if values[i]:isValid() then
if target == nil or values[i].number > target.number then
target = values[i]
end
end
end
return target or Value.new()
else
error('Unrecognized Annual Mode')
end
end
local function reconcileTemperature(C_values, F_values)
for i = 1, 13 do
local p
if C_values[i].string == '' then
if F_values[i]:isValid() then
p = F_values[i]:getPrecision()
C_values[i]:setNumberRounded((F_values[i].number - 32)*5/9, p)
end
elseif F_values[i].string == '' then
if C_values[i]:isValid() then
p = C_values[i]:getPrecision()
F_values[i]:setNumberRounded(C_values[i].number*9/5 + 32, p)
end
end
end
end
local function reconcilePrecipitation(M_values, I_values, prefer_cm)
local v_class = 0
for i = 1, 13 do
if M_values[i].variant == 1 then
v_class = 1
elseif M_values[i].variant == 2 then
v_class = 2
end
end
if v_class == 0 then
if prefer_cm then
v_class = 1
else
v_class = 2
end
end
for i = 1, 13 do
local units
if M_values[i].string == '' then
if I_values[i]:isValid() then
if v_class == 1 then
units = 'in2cm'
else
units = 'in2mm'
end
M_values[i]:setConvert(I_values[i], units)
M_values[i].variant = v_class
end
elseif I_values[i].string == '' then
if M_values[i]:isValid() then
if M_values[i].variant == 1 then
units = 'cm2in'
else
units = 'mm2in'
end
I_values[i]:setConvert(M_values[i], units)
end
end
end
end
local function _buildRow(definition, args, options)
options = options or {}
local wbc = require('Module:Weather box/colors' .. (options.sandbox or ''))
local mode = (definition.mode or 'basic'):lower()
local group_name = definition.group_name
local first_values, second_values
local color_values
local color_scheme = definition.color_scheme or 't'
local scale_factor = math_mod._cleanNumber(definition.scale_factor) or 1
local date_mode = checkFlag(definition.date_mode, false)
local label = definition.label or ''
local annual_mode = (definition.annual_mode or 'avg'):lower()
local include_space = checkFlag(definition.include_space, true)
local second_line = checkFlag(definition.second_line, false)
local prefer_cm = checkFlag(definition.prefer_cm, false)
local imperial_first = checkFlag(args['imperial first'])
local metric_first = checkFlag(args['metric first'])
local wantSingleLine = options.wantSingleLine or checkFlag(args['single line'])
local trace = args.trace
if trace and trace ~= '' then
traceText = trace
end
if imperial_first == nil then
imperial_first = metric_first == nil and true or not metric_first
end
if mode == 'basic' then
first_values = getInputs(args, group_name, nil, include_space)
second_values = nil
elseif mode == 'temperature' then
first_values = getInputs(args, group_name, {'C'}, include_space)
second_values = getInputs(args, group_name, {'F'}, include_space)
reconcileTemperature(first_values, second_values)
elseif mode == "precipitation" then
first_values = getInputs(args, group_name, {'cm', 'mm'}, include_space)
second_values = getInputs(args, group_name, {'inch'}, include_space)
reconcilePrecipitation(first_values, second_values, prefer_cm)
else
error('Requested mode not recognized')
end
local good = false
for i = 1, 13 do
if first_values[i].string ~= '' then
good = true
break
end
end
if not good then
return ''
end
if first_values[13].string == '' then
first_values[13] = getAnnualValue(first_values, annual_mode)
end
if second_values ~= nil then
if second_values[13].string == '' then
second_values[13] = getAnnualValue(second_values, annual_mode)
end
end
color_scheme = wbc.interpret_color_code(color_scheme)
color_values = {}
local month_adj = { 31/30, 28.25/30, 31/30, 1, 31/30, 1,
31/30, 31/30, 1, 31/30, 1, 31/30, 365.25/30 }
for i = 1, 13 do
if first_values[i]:isValid() then
local adj = scale_factor
if date_mode then
adj = adj / month_adj[i]
end
if mode == "precipitation" then
if first_values[i].variant == 1 then
adj = adj * 10
end
end
table.insert(color_values, color_scheme(first_values[i].number * adj))
else
table.insert(color_values, color_scheme(nil))
end
end
if imperial_first and second_values ~= nil then
first_values, second_values = second_values, first_values
end
if not wantSingleLine then
if second_line and second_values ~= nil then
first_values = second_values
end
second_values = nil
end
return makeLine(label, first_values, second_values, color_values)
end
local function buildRow(frame)
return _buildRow(frame.args, frame:getParent().args) -- row definition, template parameters
end
return {
buildRow = buildRow,
_buildRow = _buildRow,
}
099ca7bc32ffdebf71c7586d45f45fc16296dc08
Module:Weather box/colors
828
88
259
2023-03-30T20:05:35Z
Vorlitix
3
Created page with "local w = {} local math_mod = require('Module:Math') local function hex( value ) return string.format("%02X", value) end local function format_line( background, text_color ) return "background: #" .. background .. "; color:#" .. text_color .. ";" end local function range_pos( value, start, stop ) if start < stop then if value < start then return 0 elseif value > stop then return 1 else return (value - start) / (stop - start) end else if value <..."
Scribunto
text/plain
local w = {}
local math_mod = require('Module:Math')
local function hex( value )
return string.format("%02X", value)
end
local function format_line( background, text_color )
return "background: #" .. background .. "; color:#" .. text_color .. ";"
end
local function range_pos( value, start, stop )
if start < stop then
if value < start then
return 0
elseif value > stop then
return 1
else
return (value - start) / (stop - start)
end
else
if value < stop then
return 1
elseif value > start then
return 0
else
return (start - value) / (start - stop)
end
end
end
function w.color_d( frame )
local val = math_mod._cleanNumber( frame.args[1] )
return w._days_color( val )
end
function w.color_pastel( frame )
local val = math_mod._cleanNumber( frame.args[1] )
return w._pastel_color( val )
end
function w.color_t( frame )
local val = math_mod._cleanNumber( frame.args[1] )
return w._temperature_color( val )
end
function w.color_green( frame )
local val = math_mod._cleanNumber( frame.args[1] )
return w._green_color( val )
end
function w.color_s( frame )
local val = math_mod._cleanNumber( frame.args[1] )
return w._sunshine_color( val )
end
function w.color_h( frame )
local val = math_mod._cleanNumber( frame.args[1] )
return w._humidity_color( val )
end
function w.color_p( frame )
local val = math_mod._cleanNumber( frame.args[1] )
return w._precipitation_color( val )
end
function w.color_u( frame )
local val = math_mod._cleanNumber( frame.args[1] )
return w._uv_color( val )
end
function w._days_color( val )
local item, background, text_color
if val == nil then
return format_line( "FFFFFF", "000000" )
end
item = hex( range_pos( val, 20, 0 )*255 )
background = item .. item
item = hex( range_pos( val, 40, 20 )*255 )
background = background .. item
if val >= 12 then
text_color = "FFFFFF"
else
text_color = "000000"
end
return format_line( background, text_color )
end
function w._green_color( val )
local item1, item2, background, text_color
if val == nil then
return format_line( "FFFFFF", "000000" )
end
item1 = hex( range_pos( val, 165.6, 0 )*255 )
item2 = hex( range_pos( val, 300, 165.61 )*207 + 48 )
background = item1 .. item2 .. item1
if val >= 200 then
text_color = "FFFFFF"
else
text_color = "000000"
end
return format_line( background, text_color )
end
function w._temperature_color( val )
local item, background, text_color
if val == nil then
return format_line( "FFFFFF", "000000" )
end
if val < 4.5 then
item = range_pos( val, -42.75, 4.5 )*255
background = hex( item )
else
item = range_pos( val, 60, 41.5 )*255
background = hex( item )
end
if val <= 4.5 then
item = range_pos( val, -42.75, 4.5 )*255
background = background .. hex( item )
else
item = range_pos( val, 41.5, 4.5 )*255
background = background .. hex( item )
end
if val < -42.78 then
item = range_pos( val, -90, -42.78 )*255
background = background .. hex( item )
else
item = range_pos( val, 23, 4.5 )*255
background = background .. hex( item )
end
if val < -23.3 or val >= 37.8 then
text_color = "FFFFFF"
else
text_color = "000000"
end
return format_line( background, text_color )
end
function w._precipitation_color( val )
local item, background, text_color
if val == nil then
return format_line( "FFFFFF", "000000" )
end
item = hex( range_pos( val, 165.6, 0 )*255 )
background = item .. item
item = hex( range_pos( val, 300, 165.61 )*207 + 48 )
background = background .. item
if val > 90 then
text_color = "FFFFFF"
else
text_color = "000000"
end
return format_line( background, text_color )
end
function w._humidity_color( val )
local item, background, text_color
if val == nil then
return format_line( "FFFFFF", "000000" )
end
item = hex( range_pos( val, 66.67, 0 )*255 )
background = item .. item
item = hex( range_pos( val, 133.33, 66.667 )*255 )
background = background .. item
if val >= 40 then
text_color = "FFFFFF"
else
text_color = "000000"
end
return format_line( background, text_color )
end
function w._sunshine_color( val )
local item, background, text_color
if val == nil then
return format_line( "FFFFFF", "000000" )
end
if val < 90 then
item = hex( range_pos( val, 0, 90 )*170 )
elseif val < 180 then
item = hex( range_pos( val, 90, 180 )*42.5 + 170 )
else
item = hex( range_pos( val, 180, 360 )*42.5 + 212.5 )
end
background = item .. item
if val < 90 then
item = hex( range_pos( val, 0, 90 )*170 )
elseif val < 270 then
item = hex( range_pos( val, 150, 90 )*170 )
else
item = hex( range_pos( val, 270, 720 )*255 )
end
background = background .. item
if val < 80 then
text_color = "FFFFFF"
else
text_color = "000000"
end
return format_line( background, text_color )
end
function w._pastel_color( val )
local background, text_color
if val == nil then
return format_line( "FFFFFF", "000000" )
end
if val < -15 or val >= 39 then
text_color = "FFFFFF"
else
text_color = "000000"
end
if val >= 51 then
background = 'EE2200'
else
val = math_mod._round( (val + 25.5)/3, 0 )
if val == 1 then
background = 'BB00CC'
elseif val == 2 then
background = 'CC00EE'
elseif val == 3 then
background = 'CC33EE'
elseif val == 4 then
background = 'CC55EE'
elseif val == 5 then
background = 'DD66EE'
elseif val == 6 then
background = 'DD77EE'
elseif val == 7 then
background = 'DD99EE'
elseif val == 8 then
background = 'DDAAEE'
elseif val == 9 then
background = 'DDBBEE'
elseif val == 10 then
background = 'EECCFF'
elseif val == 11 then
background = 'FFDDFF'
elseif val == 12 then
background = 'F1F1F1'
elseif val == 13 then
background = 'FFEEBB'
elseif val == 14 then
background = 'FFFFCC'
elseif val == 15 then
background = 'FFFFBB'
elseif val == 16 then
background = 'FFFFAA'
elseif val == 17 then
background = 'FFFF88'
elseif val == 18 then
background = 'FFCC33'
elseif val == 19 then
background = 'FFBB33'
elseif val == 20 then
background = 'FF9900'
elseif val == 21 then
background = 'FF8844'
elseif val == 22 then
background = 'FF6633'
elseif val == 23 then
background = 'FF5522'
elseif val == 24 then
background = 'FF4422'
elseif val == 25 then
background = 'EE4400'
else
background = 'AA00AA'
end
end
return format_line( background, text_color )
end
function w._uv_color( val )
local background, text_color
if val == nil then
return format_line( "FFFFFF", "000000" )
end
if val < 3 then
background = "3EA72D"
elseif val >= 3 and val < 6 then
background = "FFF300"
elseif val >= 6 and val < 8 then
background = "F18B00"
elseif val >= 8 and val < 11 then
background = "E53210"
else
background = "B567A4"
end
if val < 3 then
text_color = "FFFFFF"
elseif val >= 3 and val < 8 then
text_color = "000000"
else
text_color = "FFFFFF"
end
return format_line( background, text_color )
end
function w._none_color()
return format_line( "FAFAFA", "000000" )
end
function w.interpret_color_code( code )
code = code:lower()
if code == 't' then
return w._temperature_color
elseif code == 'pastel' then
return w._pastel_color
elseif code == 'green' then
return w._green_color
elseif code == 'h' then
return w._humidity_color
elseif code == 's' then
return w._sunshine_color
elseif code == 'p' then
return w._precipitation_color
elseif code == 'd' then
return w._days_color
elseif code == 'u' then
return w._uv_color
elseif code == 'none' then
return w._none_color
else
error( 'Unknown color scheme option' )
end
end
return w
963fbd84022409ca95c82b422a3e45207bdee1aa
Module:Check for unknown parameters
828
89
260
2023-03-30T20:07:16Z
Vorlitix
3
Created page with "-- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext..."
Scribunto
text/plain
-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
local function clean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
local pos, truncated
local function truncate(text)
if truncated then
return ''
end
if mw.ustring.len(text) > 25 then
truncated = true
text = mw.ustring.sub(text, 1, 25) .. '...'
end
return mw.text.nowiki(text)
end
local parts = {}
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
pos = remainder
table.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')
end
table.insert(parts, truncate(text:sub(pos or 1)))
return table.concat(parts)
end
function p._check(args, pargs)
if type(args) ~= "table" or type(pargs) ~= "table" then
-- TODO: error handling
return
end
-- create the list of known args, regular expressions, and the return string
local knownargs = {}
local regexps = {}
for k, v in pairs(args) do
if type(k) == 'number' then
v = trim(v)
knownargs[v] = 1
elseif k:find('^regexp[1-9][0-9]*$') then
table.insert(regexps, '^' .. v .. '$')
end
end
-- loop over the parent args, and make sure they are on the list
local ignoreblank = isnotempty(args['ignoreblank'])
local showblankpos = isnotempty(args['showblankpositional'])
local values = {}
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if not knownflag and ( not ignoreblank or isnotempty(v) ) then
table.insert(values, clean(k))
end
elseif type(k) == 'number' and knownargs[tostring(k)] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(tostring(k), regexp) then
knownflag = true
break
end
end
if not knownflag and ( showblankpos or isnotempty(v) ) then
table.insert(values, k .. ' = ' .. clean(v))
end
end
end
-- add results to the output tables
local res = {}
if #values > 0 then
local unknown_text = args['unknown'] or 'Found _VALUE_, '
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
local preview_text = args['preview']
if isnotempty(preview_text) then
preview_text = require('Module:If preview')._warning({preview_text})
elseif preview == nil then
preview_text = unknown_text
end
unknown_text = preview_text
end
for _, v in pairs(values) do
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
if v == '' then v = ' ' end
-- avoid error with v = 'example%2' ("invalid capture index")
local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v})
table.insert(res, r)
end
end
return table.concat(res)
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
return p._check(args, pargs)
end
return p
93db6d115d4328d2a5148bb42959105e367b663e
Module:If preview
828
90
261
2023-03-30T20:07:48Z
Vorlitix
3
Created page with "local p = {} local cfg = mw.loadData('Module:If preview/configuration') --[[ main This function returns either the first argument or second argument passed to this module, depending on whether the page is being previewed. ]] function p.main(frame) if cfg.preview then return frame.args[1] or '' else return frame.args[2] or '' end end --[[ pmain This function returns either the first argument or second argument passed to this module's parent (i.e. template usi..."
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:If preview/configuration')
--[[
main
This function returns either the first argument or second argument passed to
this module, depending on whether the page is being previewed.
]]
function p.main(frame)
if cfg.preview then
return frame.args[1] or ''
else
return frame.args[2] or ''
end
end
--[[
pmain
This function returns either the first argument or second argument passed to
this module's parent (i.e. template using this module), depending on whether it
is being previewed.
]]
function p.pmain(frame)
return p.main(frame:getParent())
end
local function warning_text(warning)
return mw.ustring.format(
cfg.warning_infrastructure,
cfg.templatestyles,
warning
)
end
function p._warning(args)
local warning = args[1] and args[1]:match('^%s*(.-)%s*$') or ''
if warning == '' then
return warning_text(cfg.missing_warning)
end
if not cfg.preview then return '' end
return warning_text(warning)
end
--[[
warning
This function returns a "preview warning", which is the first argument marked
up with HTML and some supporting text, depending on whether the page is being previewed.
disabled since we'll implement the template version in general
]]
--function p.warning(frame)
-- return p._warning(frame.args)
--end
--[[
warning, but for pass-through templates like {{preview warning}}
]]
function p.pwarning(frame)
return p._warning(frame:getParent().args)
end
return p
9a92196d0001b8016f2501aedfadcc3adcb974ef
Module:If preview/configuration
828
91
262
2023-03-30T20:09:14Z
Vorlitix
3
Created page with "local frame = mw.getCurrentFrame() local function is_preview() local revision_id = frame:preprocess('{{REVISIONID}}') -- {{REVISIONID}} is usually the empty string when previewed. return revision_id == nil or revision_id == '' end local function templatestyles() return frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:If preview/styles.css' } } end return { preview = is_preview(), templatestyles = templatestyles(), warning_infrastructure =..."
Scribunto
text/plain
local frame = mw.getCurrentFrame()
local function is_preview()
local revision_id = frame:preprocess('{{REVISIONID}}')
-- {{REVISIONID}} is usually the empty string when previewed.
return revision_id == nil or revision_id == ''
end
local function templatestyles()
return frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:If preview/styles.css' }
}
end
return {
preview = is_preview(),
templatestyles = templatestyles(),
warning_infrastructure = '%s<div class="preview-warning"><strong>Preview warning:</strong> %s</div>',
missing_warning = 'The template has no warning text. Please add a warning.'
}
1748b8b422f9161f7136f6c9bdbd8d0b8b40e7f3
Module:If preview/styles.css
828
92
263
2023-03-30T20:10:39Z
Vorlitix
3
Created page with "/* {{pp|small=yes}} */ .preview-warning { font-style: italic; /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; color: red; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .preview-warning + link + .preview-warning { margin-top: -0.5em; }"
sanitized-css
text/css
/* {{pp|small=yes}} */
.preview-warning {
font-style: italic;
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
color: red;
}
/* The templatestyles element inserts a link element before hatnotes.
* TODO: Remove link if/when WMF resolves T200206 */
.preview-warning + link + .preview-warning {
margin-top: -0.5em;
}
8b79ffc4853d424a805b084de00030e04bbd573e
Template:Weather Box
10
93
264
2023-03-30T20:11:31Z
Vorlitix
3
Created page with "<includeonly>{{#invoke:weather box|main}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{Namespace detect | main = [[Category:Pages using weather box with unknown parameters|_VALUE_{{PAGENAME}}]] | template = [[Category:Pages using weather box with unknown parameters|Template_VALUE_{{PAGENAME}}]] | other = <!-- do not categorize -->}}|preview=Page using [[Template:Weather box]] with unknown parameter "_VALUE_"|ignoreblank=y| Apr afthumidity | Apr avg..."
wikitext
text/x-wiki
<includeonly>{{#invoke:weather box|main}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{Namespace detect | main = [[Category:Pages using weather box with unknown parameters|_VALUE_{{PAGENAME}}]] | template = [[Category:Pages using weather box with unknown parameters|Template_VALUE_{{PAGENAME}}]] | other = <!-- do not categorize -->}}|preview=Page using [[Template:Weather box]] with unknown parameter "_VALUE_"|ignoreblank=y| Apr afthumidity | Apr avg record high C | Apr avg record high F | Apr avg record low C | Apr avg record low F | Apr chill | Apr dew point C | Apr dew point F | Apr high C | Apr high F | Apr humidity | Apr light | Apr low C | Apr low F | Apr maximum humidex | Apr mean C | Apr mean F | Apr percentsun | Apr precipitation cm | Apr precipitation days | Apr precipitation inch | Apr precipitation mm | Apr rain cm | Apr rain days | Apr rain inch | Apr rain mm | Apr record high C | Apr record high F | Apr record low C | Apr record low F | Apr snow cm | Apr snow days | Apr snow inch | Apr snow mm | Apr snow depth cm | Apr snow depth inch | Apr snow depth mm | Apr sun | Aprd sun | Apr uv | Aug afthumidity | Aug avg record high C | Aug avg record high F | Aug avg record low C | Aug avg record low F | Aug chill | Aug dew point C | Aug dew point F | Aug high C | Aug high F | Aug humidity | Aug light | Aug low C | Aug low F | Aug maximum humidex | Aug mean C | Aug mean F | Aug percentsun | Aug precipitation cm | Aug precipitation days | Aug precipitation inch | Aug precipitation mm | Aug rain cm | Aug rain days | Aug rain inch | Aug rain mm | Aug record high C | Aug record high F | Aug record low C | Aug record low F | Aug snow cm | Aug snow days | Aug snow inch | Aug snow mm | Aug snow depth cm | Aug snow depth inch | Aug snow depth mm | Aug sun | Augd sun | Aug uv | collapsed | daily | date | Dec afthumidity | Dec avg record high C | Dec avg record high F | Dec avg record low C | Dec avg record low F | Dec chill | Dec dew point C | Dec dew point F | Dec high C | Dec high F | Dec humidity | Dec light | Dec low C | Dec low F | Dec maximum humidex | Dec mean C | Dec mean F | Dec percentsun | Dec precipitation cm | Dec precipitation days | Dec precipitation inch | Dec precipitation mm | Dec rain cm | Dec rain days | Dec rain inch | Dec rain mm | Dec record high C | Dec record high F | Dec record low C | Dec record low F | Dec snow cm | Dec snow days | Dec snow inch | Dec snow mm | Dec snow depth cm | Dec snow depth inch | Dec snow depth mm | Dec sun | Decd sun | Dec uv | Feb afthumidity | Feb avg record high C | Feb avg record high F | Feb avg record low C | Feb avg record low F | Feb chill | Feb dew point C | Feb dew point F | Feb high C | Feb high F | Feb humidity | Feb light | Feb low C | Feb low F | Feb maximum humidex | Feb mean C | Feb mean F | Feb percentsun | Feb precipitation cm | Feb precipitation days | Feb precipitation inch | Feb precipitation mm | Feb rain cm | Feb rain days | Feb rain inch | Feb rain mm | Feb record high C | Feb record high F | Feb record low C | Feb record low F | Feb snow cm | Feb snow days | Feb snow inch | Feb snow mm | Feb snow depth cm | Feb snow depth inch | Feb snow depth mm | Feb sun | Febd sun | Feb uv | humidity colour | Jan afthumidity | Jan avg record high C | Jan avg record high F | Jan avg record low C | Jan avg record low F | Jan chill | Jan dew point C | Jan dew point F | Jan high C | Jan high F | Jan humidity | Jan light | Jan low C | Jan low F | Jan maximum humidex | Jan mean C | Jan mean F | Jan percentsun | Jan precipitation cm | Jan precipitation days | Jan precipitation inch | Jan precipitation mm | Jan rain cm | Jan rain days | Jan rain inch | Jan rain mm | Jan record high C | Jan record high F | Jan record low C | Jan record low F | Jan snow cm | Jan snow days | Jan snow inch | Jan snow mm | Jan snow depth cm | Jan snow depth inch | Jan snow depth mm | Jan sun | Jand sun | Jan uv | Jul afthumidity | Jul avg record high C | Jul avg record high F | Jul avg record low C | Jul avg record low F | Jul chill | Jul dew point C | Jul dew point F | Jul high C | Jul high F | Jul humidity | Jul light | Jul low C | Jul low F | Jul maximum humidex | Jul mean C | Jul mean F | Jul percentsun | Jul precipitation cm | Jul precipitation days | Jul precipitation inch | Jul precipitation mm | Jul rain cm | Jul rain days | Jul rain inch | Jul rain mm | Jul record high C | Jul record high F | Jul record low C | Jul record low F | Jul snow cm | Jul snow days | Jul snow inch | Jul snow mm | Jul snow depth cm | Jul snow depth inch | Jul snow depth mm | Jul sun | Juld sun | Jul uv | Jun afthumidity | Jun avg record high C | Jun avg record high F | Jun avg record low C | Jun avg record low F | Jun chill | Jun dew point C | Jun dew point F | Jun high C | Jun high F | Jun humidity | Jun light | Jun low C | Jun low F | Jun maximum humidex | Jun mean C | Jun mean F | Jun percentsun | Jun precipitation cm | Jun precipitation days | Jun precipitation inch | Jun precipitation mm | Jun rain cm | Jun rain days | Jun rain inch | Jun rain mm | Jun record high C | Jun record high F | Jun record low C | Jun record low F | Jun snow cm | Jun snow days | Jun snow inch | Jun snow mm | Jun snow depth cm | Jun snow depth inch | Jun snow depth mm | Jun sun | Jund sun | Jun uv | location | Mar afthumidity | Mar avg record high C | Mar avg record high F | Mar avg record low C | Mar avg record low F | Mar chill | Mar dew point C | Mar dew point F | Mar high C | Mar high F | Mar humidity | Mar light | Mar low C | Mar low F | Mar maximum humidex | Mar mean C | Mar mean F | Mar percentsun | Mar precipitation cm | Mar precipitation days | Mar precipitation inch | Mar precipitation mm | Mar rain cm | Mar rain days | Mar rain inch | Mar rain mm | Mar record high C | Mar record high F | Mar record low C | Mar record low F | Mar snow cm | Mar snow days | Mar snow inch | Mar snow mm | Mar snow depth cm | Mar snow depth inch | Mar snow depth mm | Mar sun | Mard sun | Mar uv | margin | May afthumidity | May avg record high C | May avg record high F | May avg record low C | May avg record low F | May chill | May dew point C | May dew point F | May high C | May high F | May humidity | May light | May low C | May low F | May maximum humidex | May mean C | May mean F | May percentsun | May precipitation cm | May precipitation days | May precipitation inch | May precipitation mm | May rain cm | May rain days | May rain inch | May rain mm | May record high C | May record high F | May record low C | May record low F | May snow cm | May snow days | May snow inch | May snow mm | May snow depth cm | May snow depth inch | May snow depth mm | May sun | Mayd sun | May uv | metric first | name | Nov afthumidity | Nov avg record high C | Nov avg record high F | Nov avg record low C | Nov avg record low F | Nov chill | Nov dew point C | Nov dew point F | Nov high C | Nov high F | Nov humidity | Nov light | Nov low C | Nov low F | Nov maximum humidex | Nov mean C | Nov mean F | Nov percentsun | Nov precipitation cm | Nov precipitation days | Nov precipitation inch | Nov precipitation mm | Nov rain cm | Nov rain days | Nov rain inch | Nov rain mm | Nov record high C | Nov record high F | Nov record low C | Nov record low F | Nov snow cm | Nov snow days | Nov snow inch | Nov snow mm | Nov snow depth cm | Nov snow depth inch | Nov snow depth mm | Nov sun | Novd sun | Nov uv | Oct afthumidity | Oct avg record high C | Oct avg record high F | Oct avg record low C | Oct avg record low F | Oct chill | Oct dew point C | Oct dew point F | Oct high C | Oct high F | Oct humidity | Oct light | Oct low C | Oct low F | Oct maximum humidex | Oct mean C | Oct mean F | Oct percentsun | Oct precipitation cm | Oct precipitation days | Oct precipitation inch | Oct precipitation mm | Oct rain cm | Oct rain days | Oct rain inch | Oct rain mm | Oct record high C | Oct record high F | Oct record low C | Oct record low F | Oct snow cm | Oct snow days | Oct snow inch | Oct snow mm | Oct snow depth cm | Oct snow depth inch | Oct snow depth mm | Oct sun | Octd sun | Oct uv | open | precip days colour | precipitation colour | rain colour | Sep afthumidity | Sep avg record high C | Sep avg record high F | Sep avg record low C | Sep avg record low F | Sep chill | Sep dew point C | Sep dew point F | Sep high C | Sep high F | Sep humidity | Sep light | Sep low C | Sep low F | Sep maximum humidex | Sep mean C | Sep mean F | Sep percentsun | Sep precipitation cm | Sep precipitation days | Sep precipitation inch | Sep precipitation mm | Sep rain cm | Sep rain days | Sep rain inch | Sep rain mm | Sep record high C | Sep record high F | Sep record low C | Sep record low F | Sep snow cm | Sep snow days | Sep snow inch | Sep snow mm | Sep snow depth cm | Sep snow depth inch | Sep snow depth mm | Sep sun | Sepd sun | Sep uv | single line | snow colour | source | source 1 | source 2 | sun colour | temperature colour | time day | trace | unit precipitation days | unit rain days | unit snow days | width | year afthumidity | year avg record high C | year avg record high F | year avg record low C | year avg record low F | year chill | year dew point C | year dew point F | year high C | year high F | year humidity | year light | year low C | year low F | year maximum humidex | year mean C | year mean F | year percentsun | year precipitation days | year precipitation inch | year precipitation cm | year precipitation mm | year rain days | year rain inch | year rain cm | year rain mm | year record high C | year record high F | year record low C | year record low F | year snow days | year snow inch | year snow cm | year snow mm | year snow depth cm | year snow depth inch | year snow depth mm | year sun | yeard sun | year uv }}<noinclude>
{{Documentation}}
</noinclude>
36e948a47be84ce2fa209a67030538e08f49df17
Template:Namespace detect
10
94
265
2023-03-30T20:12:56Z
Vorlitix
3
Created page with "{{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude>"
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
b4af86f91bea873fdb8145e7809511fed3a610ce
Module:Namespace detect
828
95
266
2023-03-30T20:13:21Z
Vorlitix
3
Created page with "--[[ -------------------------------------------------------------------------------- -- -- -- NAMESPACE DETECT -- -- -- -- This module implements the {{namespace detect}} template in Lua, with a -- -- few improvements: all namespaces and all namespace aliases are..."
Scribunto
text/plain
--[[
--------------------------------------------------------------------------------
-- --
-- NAMESPACE DETECT --
-- --
-- This module implements the {{namespace detect}} template in Lua, with a --
-- few improvements: all namespaces and all namespace aliases are supported, --
-- and namespace names are detected automatically for the local wiki. The --
-- module can also use the corresponding subject namespace value if it is --
-- used on a talk page. Parameter names can be configured for different wikis --
-- by altering the values in the "cfg" table in --
-- Module:Namespace detect/config. --
-- --
--------------------------------------------------------------------------------
--]]
local data = mw.loadData('Module:Namespace detect/data')
local argKeys = data.argKeys
local cfg = data.cfg
local mappings = data.mappings
local yesno = require('Module:Yesno')
local mArguments -- Lazily initialise Module:Arguments
local mTableTools -- Lazily initilalise Module:TableTools
local ustringLower = mw.ustring.lower
local p = {}
local function fetchValue(t1, t2)
-- Fetches a value from the table t1 for the first key in array t2 where
-- a non-nil value of t1 exists.
for i, key in ipairs(t2) do
local value = t1[key]
if value ~= nil then
return value
end
end
return nil
end
local function equalsArrayValue(t, value)
-- Returns true if value equals a value in the array t. Otherwise
-- returns false.
for i, arrayValue in ipairs(t) do
if value == arrayValue then
return true
end
end
return false
end
function p.getPageObject(page)
-- Get the page object, passing the function through pcall in case of
-- errors, e.g. being over the expensive function count limit.
if page then
local success, pageObject = pcall(mw.title.new, page)
if success then
return pageObject
else
return nil
end
else
return mw.title.getCurrentTitle()
end
end
-- Provided for backward compatibility with other modules
function p.getParamMappings()
return mappings
end
local function getNamespace(args)
-- This function gets the namespace name from the page object.
local page = fetchValue(args, argKeys.demopage)
if page == '' then
page = nil
end
local demospace = fetchValue(args, argKeys.demospace)
if demospace == '' then
demospace = nil
end
local subjectns = fetchValue(args, argKeys.subjectns)
local ret
if demospace then
-- Handle "demospace = main" properly.
if equalsArrayValue(argKeys.main, ustringLower(demospace)) then
ret = mw.site.namespaces[0].name
else
ret = demospace
end
else
local pageObject = p.getPageObject(page)
if pageObject then
if pageObject.isTalkPage then
-- Get the subject namespace if the option is set,
-- otherwise use "talk".
if yesno(subjectns) then
ret = mw.site.namespaces[pageObject.namespace].subject.name
else
ret = 'talk'
end
else
ret = pageObject.nsText
end
else
return nil -- return nil if the page object doesn't exist.
end
end
ret = ret:gsub('_', ' ')
return ustringLower(ret)
end
function p._main(args)
-- Check the parameters stored in the mappings table for any matches.
local namespace = getNamespace(args) or 'other' -- "other" avoids nil table keys
local params = mappings[namespace] or {}
local ret = fetchValue(args, params)
--[[
-- If there were no matches, return parameters for other namespaces.
-- This happens if there was no text specified for the namespace that
-- was detected or if the demospace parameter is not a valid
-- namespace. Note that the parameter for the detected namespace must be
-- completely absent for this to happen, not merely blank.
--]]
if ret == nil then
ret = fetchValue(args, argKeys.other)
end
return ret
end
function p.main(frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame, {removeBlanks = false})
local ret = p._main(args)
return ret or ''
end
function p.table(frame)
--[[
-- Create a wikitable of all subject namespace parameters, for
-- documentation purposes. The talk parameter is optional, in case it
-- needs to be excluded in the documentation.
--]]
-- Load modules and initialise variables.
mTableTools = require('Module:TableTools')
local namespaces = mw.site.namespaces
local cfg = data.cfg
local useTalk = type(frame) == 'table'
and type(frame.args) == 'table'
and yesno(frame.args.talk) -- Whether to use the talk parameter.
-- Get the header names.
local function checkValue(value, default)
if type(value) == 'string' then
return value
else
return default
end
end
local nsHeader = checkValue(cfg.wikitableNamespaceHeader, 'Namespace')
local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, 'Aliases')
-- Put the namespaces in order.
local mappingsOrdered = {}
for nsname, params in pairs(mappings) do
if useTalk or nsname ~= 'talk' then
local nsid = namespaces[nsname].id
-- Add 1, as the array must start with 1; nsid 0 would be lost otherwise.
nsid = nsid + 1
mappingsOrdered[nsid] = params
end
end
mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered)
-- Build the table.
local ret = '{| class="wikitable"'
.. '\n|-'
.. '\n! ' .. nsHeader
.. '\n! ' .. aliasesHeader
for i, params in ipairs(mappingsOrdered) do
for j, param in ipairs(params) do
if j == 1 then
ret = ret .. '\n|-'
.. '\n| <code>' .. param .. '</code>'
.. '\n| '
elseif j == 2 then
ret = ret .. '<code>' .. param .. '</code>'
else
ret = ret .. ', <code>' .. param .. '</code>'
end
end
end
ret = ret .. '\n|-'
.. '\n|}'
return ret
end
return p
a4757000273064f151f0f22dc0e139092e5ff443
Orange Blossom Beach Community
0
96
267
2023-03-31T00:35:29Z
Vorlitix
3
i am eating a BLT for dinner today
wikitext
text/x-wiki
''Not to be confused with the [https://obb.miraheze.org/wiki/Orange_Blossom_Beach_(game)#Community Community of Orange Blossom Beach]''
Orange Blossom Beach Community is the main group that maintains ownership of the eponymous game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. The group is owned by the placeholder account that too goes by the eponymous name of OrangeBlossomBeach, however the creators of both the game and the group are listed the rank below Group Holder. The group was created on December 3rd, 2021 and was later made public the following day on December 4th, 2021. The group specializes in announcements and promotional material such as shirts, t-shirts, and pants.
==History==
The group itself was created on December 3rd, 2021. Shortly after being created, the group uploaded a white t-shirt with the OBB Seal entitled [https://www.roblox.com/catalog/8169204428/OBB-City-Seal ''OBB City Seal'']. The following day, another shirt was uploaded entitled [https://www.roblox.com/catalog/8175121554/Tacoball-employee-grey ''Tacoball employee+ (grey)'']. This shirt would eventually be taken off-sale and replaced with [https://www.roblox.com/catalog/11657492439/Tacoball-Employee ''<nowiki>Tacoball Employee [+]</nowiki>''] on November 4, 2022.
Group ownership would eventually be changed to the OrangeBlossomBeach account. On September 16, 2022 at 10:49 PM, the main Orange Blossom Beach game was moved from Hattozo's profile to The Three Men of Business. This caused a variety of issues, such as issues with the games audio and tool gripping. Another major issue was with the in-game chat. Many of these issues were resolved in [[0.29.3]], specifically with audio issues in the developer console and the tool gripping with soda items. Due to Orange Blossom Beach being moved to The Three Men of Business, most if not all of the games assets would be uploaded to the group.
Later, on November 12, 2022, The Three Men of Business was renamed to Orange Blossom Beach Community after a vote on the server's discord. The poll to rename the group was done on September 30, 2022 and had the results of 12 to change the name and 1 against the name change. An additional reason to the name change was the addition of Carsop to the executive management of the group, defeating the purpose of the name "The Three Men of Business".
Orange Blossom Beach Community continues to host updates for the main game and announce them. The group itself also releases clothing, as mentioned before. Clothing for the Orange Blossom Beach police were introduced on September 21, 2022 and clothing for [[Craig World Cafe]] employees were created on March 30, 2022
[[Category:Miscellaneous information]]
268b0ae54295f742e75c11f546d14cd5ba467079
Shiloh Springs
0
98
269
2023-06-28T08:02:00Z
Carsop
4
created page
wikitext
text/x-wiki
Shiloh Springs is an [https://en.wikipedia.org/wiki/Unincorporated_area unincorporated community] outside of [[Orange Blossom Beach]].
Shiloh Springs has a population of 59.
e49847907f5018a4c8632f870b7d0d931974fc6e
270
269
2023-06-28T08:03:02Z
Carsop
4
added category
wikitext
text/x-wiki
Shiloh Springs is an [https://en.wikipedia.org/wiki/Unincorporated_area unincorporated community] outside of [[Orange Blossom Beach]].
Shiloh Springs has a population of 59.
[[Category:Map locations]]
81f7cdcc94151470ea0ae097742d2d25a6e69e2f
281
270
2023-06-28T08:51:52Z
Carsop
4
added image
wikitext
text/x-wiki
[[File:Shiloh springs sign.png|thumb|550x550px|The entrance to Shiloh Springs]]
Shiloh Springs is an [https://en.wikipedia.org/wiki/Unincorporated_area unincorporated community] outside of [[Orange Blossom Beach]].
Shiloh Springs has a population of 59.
[[Category:Map locations]]
67ec817521ae4450d3580ea5ec4fcfd50b176936
Orange Blossom Beach
0
33
271
208
2023-06-28T08:04:04Z
Carsop
4
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s.
It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation.
Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area.
[[Category:Map locations]]
c939e2839e0c29d36343017abd9332434ea0e7c7
Northwest Florida Regional Airport
0
99
272
2023-06-28T08:28:46Z
Carsop
4
created page (delta Air Lines is not a misspelled Airlines, thats just how the company is named)
wikitext
text/x-wiki
The Northwest Florida Regional Airport is a small airport in [[Orange Blossom Beach]]. The Northwest Florida Regional Airport consists of one terminal, an [https://en.wikipedia.org/wiki/Enterprise_Rent-A-Car Enterprise Rent-A-Car], two hangars, and one runway. The airport has two airlines: [https://en.wikipedia.org/wiki/United_Airlines United Airlines] and [https://en.wikipedia.org/wiki/Delta_Air_Lines Delta Air Lines] along with a closed check-in counter for [https://en.wikipedia.org/wiki/Southwest_Airlines Southwest Airlines].
97ed4830eab48a68a0e74908af187b5f549c5b3d
273
272
2023-06-28T08:29:34Z
Carsop
4
added category
wikitext
text/x-wiki
The Northwest Florida Regional Airport is a small airport in [[Orange Blossom Beach]]. The Northwest Florida Regional Airport consists of one terminal, an [https://en.wikipedia.org/wiki/Enterprise_Rent-A-Car Enterprise Rent-A-Car], two hangars, and one runway. The airport has two airlines: [https://en.wikipedia.org/wiki/United_Airlines United Airlines] and [https://en.wikipedia.org/wiki/Delta_Air_Lines Delta Air Lines] along with a closed check-in counter for [https://en.wikipedia.org/wiki/Southwest_Airlines Southwest Airlines].
[[Category:Map locations]]
6ff37c9447701661cb90834c55845608ef5b274c
274
273
2023-06-28T08:33:27Z
Carsop
4
mentioned star gas
wikitext
text/x-wiki
The Northwest Florida Regional Airport is a small airport in [[Orange Blossom Beach]]. The Northwest Florida Regional Airport consists of one terminal, an [https://en.wikipedia.org/wiki/Enterprise_Rent-A-Car Enterprise Rent-A-Car], two hangars, and one runway. The airport has two airlines: [https://en.wikipedia.org/wiki/United_Airlines United Airlines] and [https://en.wikipedia.org/wiki/Delta_Air_Lines Delta Air Lines] along with a closed check-in counter for [https://en.wikipedia.org/wiki/Southwest_Airlines Southwest Airlines]. The airport is across from [[Star Gas]].
[[Category:Map locations]]
fa49a5e4943c758e11d177022dfd9a2c05e9c181
279
274
2023-06-28T08:48:15Z
Carsop
4
added images
wikitext
text/x-wiki
[[File:Nfra airport.png|thumb|508x508px|The front of the Northwest Florida Regional Airport as seen in-game.]]
[[File:Terminal.png|thumb|508x508px|The terminal of the Northwest Florida Regional Airport]]
The Northwest Florida Regional Airport is a small airport in [[Orange Blossom Beach]]. The Northwest Florida Regional Airport consists of one terminal, an [https://en.wikipedia.org/wiki/Enterprise_Rent-A-Car Enterprise Rent-A-Car], two hangars, and one runway. The airport has two airlines: [https://en.wikipedia.org/wiki/United_Airlines United Airlines] and [https://en.wikipedia.org/wiki/Delta_Air_Lines Delta Air Lines] along with a closed check-in counter for [https://en.wikipedia.org/wiki/Southwest_Airlines Southwest Airlines]. The airport is across from [[Star Gas]].
[[Category:Map locations]]
69fe0f8ed63acd95bcf0a38b341c65b7119aef6d
File:Star Gas.png
6
100
275
2023-06-28T08:36:54Z
Carsop
4
wikitext
text/x-wiki
A screenshot of Star Gas in OBB. The prices are high.
8ae9b3fbafedac5ff1a9e7821d27c6be51027e64
Star Gas
0
101
276
2023-06-28T08:38:41Z
Carsop
4
created page
wikitext
text/x-wiki
[[File:Star Gas.png|thumb|520x520px|Star Gas as seen in Orange Blossom Beach.]]
Star Gas is a gas station located in [[Orange Blossom Beach]] across from the [[Northwest Florida Regional Airport]]. Star Gas is known for having high gas prices to take advantage of people returning rental cars. Star Gas consists of eight gas pumps, a food mart and a certified truck scale.
[[Category:Map locations]]
90a6f891f90e49d6d81619fd438ec8013ea2c276
File:Nfra airport.png
6
102
277
2023-06-28T08:40:45Z
Carsop
4
wikitext
text/x-wiki
its the airport
4db0a4dc8f58db1efa36576b3e9033a3880b8587
File:Terminal.png
6
103
278
2023-06-28T08:43:04Z
Carsop
4
wikitext
text/x-wiki
the airport terminal
d65e9967377cc90fe7d496d7dcb9d095d8fb7875
File:Shiloh springs sign.png
6
104
280
2023-06-28T08:50:29Z
Carsop
4
wikitext
text/x-wiki
the sign outside shiloh springs
ecbd80b87777934e0d39aaa16be27eefaa9682e7
File:Soap and suds interior.png
6
105
282
2023-06-28T08:59:41Z
Carsop
4
wikitext
text/x-wiki
the interior of the soap & suds laundromat
350d6d3acdd92672492691b80615984df79bbae5
Soap & Suds Laundromat
0
106
283
2023-06-28T09:00:26Z
Carsop
4
created page
wikitext
text/x-wiki
[[File:Soap and suds interior.png|thumb|508x508px|The inside of the Soap & Suds Laundromat.]]
The Soap & Suds Laundromat is a laundromat located in [[Orange Blossom Beach]].
[[Category:Map locations]]
4f5984f4a56543fc6d96ae5f98fbb91c5b9b25f2
File:Cwc.png
6
107
284
2023-06-28T09:05:15Z
Carsop
4
wikitext
text/x-wiki
the craig world cafe
7f32cd9fb857f0ec1757f8be116ade0b0da2acf4
Craig World Cafe
0
108
285
2023-06-28T09:06:38Z
Carsop
4
created page, needs last name for the owner
wikitext
text/x-wiki
[[File:Cwc.png|thumb|508x508px|The front of the Craig World Cafe.]]
The Craig World Cafe is a Cafe in [[Orange Blossom Beach]]. The Craig World Cafe was opened in 2004 and is owned and operated by Craig (last name).
[[Category:Map locations]]
28d37163b08713085d5ce7b246feac45e0c644fb
File:Italy pizza.png
6
109
286
2023-06-28T09:10:17Z
Carsop
4
wikitext
text/x-wiki
italy pizza
2c4c1ab65bae70b673ffa6e0b08fb979f75946a6
Italy Pizza
0
110
287
2023-06-28T09:17:52Z
Carsop
4
Created page
wikitext
text/x-wiki
[[File:Italy pizza.png|thumb|508x508px|The front of Italy Pizza.]]
Italy Pizza is a pizza place in [[Orange Blossom Beach]].
Italy Pizza claims to be (and used to be) authentic, but the pizza is frozen.
Italy Pizza has been shutdown once due to a rat infestation, but has reopened since.
9bfcd32185d1ce6b66a88579b3c04ec90d43b87d
290
287
2023-06-28T09:30:32Z
Carsop
4
added category
wikitext
text/x-wiki
[[File:Italy pizza.png|thumb|508x508px|The front of Italy Pizza.]]
Italy Pizza is a pizza place in [[Orange Blossom Beach]].
Italy Pizza claims to be (and used to be) authentic, but the pizza is frozen.
Italy Pizza has been shutdown once due to a rat infestation, but has reopened since.
[[Category:Map locations]]
bc9fec2858af9c7d359d5e7ff563f0c34c75499d
File:Charlottes market.png
6
111
288
2023-06-28T09:23:52Z
Carsop
4
wikitext
text/x-wiki
the front of charlotte's market
e99f6c2d12c4609e2420d324a26f8284435e932e
Charlotte's Neighborhood Market
0
112
289
2023-06-28T09:26:25Z
Carsop
4
created page
wikitext
text/x-wiki
[[File:Charlottes market.png|thumb|508x508px|The front of Charlotte's Market during its grand opening.]]
Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
The market used to be the original location for [[Harpmann & Associates]].
8dc9b8651e3f70a2fa01e54d4b7faa036457da81
291
289
2023-06-28T09:30:57Z
Carsop
4
added category
wikitext
text/x-wiki
[[File:Charlottes market.png|thumb|508x508px|The front of Charlotte's Market during its grand opening.]]
Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
The market used to be the original location for [[Harpmann & Associates]].
[[Category:Map locations]]
20613f9a7b372804b51033c98f4ec4b880340854
File:Lake drive plaza.png
6
113
292
2023-06-28T09:37:25Z
Carsop
4
wikitext
text/x-wiki
the lake drive plaza
5f9681edcb901da330a6c3e7049e429c4882e9cb
Lake Drive Plaza
0
114
293
2023-06-28T09:39:22Z
Carsop
4
Created page
wikitext
text/x-wiki
[[File:Lake drive plaza.png|thumb|755x755px|The Lake Drive Plaza strip mall]]
Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]].
The Lake Drive Plaza has been home to several stores:
Current Stores:
* [[Charlotte's Neighborhood Market]]
* [[Blossom Photography]]
* [[Taco Ball]]
* [[Discount Tree]]
* [[Jerry's Thrift & More Clearance Center]]
Former Stores:
* [[Harpmann & Associates]]
[[Category:Map locations]]
da8708049bb48bf8f4c5771108fe648aa9707f8c
301
293
2023-06-28T09:51:14Z
Carsop
4
Added comment
wikitext
text/x-wiki
[[File:Lake drive plaza.png|thumb|755x755px|The Lake Drive Plaza strip mall<!-- Image must be updated when Jerry's Thrift & More Clearance Center is finished. -->]]
Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]].
The Lake Drive Plaza has been home to several stores:
Current Stores:
* [[Charlotte's Neighborhood Market]]
* [[Blossom Photography]]
* [[Taco Ball]]
* [[Discount Tree]]
* [[Jerry's Thrift & More Clearance Center]]
Former Stores:
* [[Harpmann & Associates]]
[[Category:Map locations]]
63bc35cd807619b0ae6fa42918fa4caa240dbef4
File:Blossom photography.png
6
115
294
2023-06-28T09:41:36Z
Carsop
4
wikitext
text/x-wiki
the front of blossom photography
98229ea9d37626f591eeff28ed3c6bd0a169e94c
Blossom Photography
0
116
295
2023-06-28T09:42:58Z
Carsop
4
Created page
wikitext
text/x-wiki
[[File:Blossom photography.png|thumb|435x435px|The front of Blossom Photography.]]
Blossom Photography is a professional photo studio in the [[Lake Drive Plaza]] located in [[Orange Blossom Beach]].
[[Category:Map locations]]
497abfcf8016a86f2c8859808677a8e95d72164c
Taco Ball
0
44
296
167
2023-06-28T09:44:02Z
Carsop
4
linked lake drive plaza
wikitext
text/x-wiki
Taco Ball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing.
[[File:Tacoball as of December 10th, 2008.png|thumb|Taco Ball as of 12/10/2008]]
== History ==
Taco Ball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos.
=== Opening and later expansion of cuisine ===
After returning from Galveston, and inspired by Tamaulipas, Ball opened Taco Ball in 1987 off Lake Drive in the [[Lake Drive Plaza]] in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Taco Ball renovated their restaurant in 1999 and further advertised in the city in 2002.
=== Death of Ball and change of ownership ===
On the 10th of March, 2006, Carlos Jamie Ball, the founder of Taco Ball died of a heart attack in his own home in Orange Blossom Beach 8 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Taco Ball shortly after in April of 2006. Francisco has been the CEO of Taco Ball since.
== Menu ==
The menu of Taco Ball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells.
=== Taco ===
Regular Taco - A signature Taco Ball item in which could be offered with a soft shell or a hard shell.
Deluxe Taco - Taco Ball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions.
Taco Ball - A ball shaped taco, with the exact same ingredients inside.
=== Mushing ===
Mushing - A Taco Ball original, which can be added on with a drink.
Deluxe Mushing Meal - Mushing, with an included drink and more ingredients to add to the flavor.
Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself.
=== Other ===
Taco w/ Mushing - A Taco Ball taco included with mushing as a side.
[[Category: Lore]] [[Category:Map locations]]
cffe8256ee1eabd7e967f9347815fda9f51f440c
File:Discount Tree.png
6
117
297
2023-06-28T09:46:05Z
Carsop
4
wikitext
text/x-wiki
front of discount tree
cefb60bce6a8e8237b45e2928161533732b869df
Discount Tree
0
118
298
2023-06-28T09:47:15Z
Carsop
4
Created Page
wikitext
text/x-wiki
[[File:Discount Tree.png|thumb|508x508px|The front of Discount Tree.]]
Discount Tree is a dollar store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
Discount Tree is based off of [https://en.wikipedia.org/wiki/Dollar_Tree Dollar Tree]
[[Category:Map locations]]
ee729298d34b6db2119f1bb77a9dd17dc618e362
File:Thrift-store-WIP.png
6
119
299
2023-06-28T09:49:16Z
Carsop
4
wikitext
text/x-wiki
wip thrift store
36c0a4aff1f9ed8169ab12c5186151d79c59c8d2
Jerry's Thrift & More Clearance Center
0
120
300
2023-06-28T09:50:16Z
Carsop
4
created page, update when thrift store is finished
wikitext
text/x-wiki
[[File:Thrift-store-WIP.png|thumb|508x508px|The in-progress Jerry's Thrift & More Clearance Center]]
Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
ec1e2ee51e8981e7cafbfb3f89260f2b83fe035a
File:Harpmann office3.png
6
121
302
2023-06-28T09:54:04Z
Carsop
4
wikitext
text/x-wiki
the third harpmann & associates office
3f8b4eeacfc3cf448b451f7c3fb8c802f7ec8c25
File:Harpmann ad2.png
6
122
303
2023-06-28T09:57:12Z
Carsop
4
wikitext
text/x-wiki
ad for harpmann & associates
f9f5f58434a0cea1d43f2b5a8a77f2e722d925ec
File:Harpmann bombing.png
6
123
304
2023-06-28T10:04:38Z
Carsop
4
wikitext
text/x-wiki
the harpmann office after the bombing
0b3d8f93592ae1b67450459b5b8f989c084b18b4
File:Kaleidoscopic records.png
6
124
305
2023-06-28T10:07:16Z
Carsop
4
wikitext
text/x-wiki
kale records
ace2c8d9498315529af03a9171e403c938d597e2
Kaleidoscopic Records
0
63
306
209
2023-06-28T10:08:16Z
Carsop
4
minor changes, added image
wikitext
text/x-wiki
[[File:Kaleidoscopic records.png|thumb|510x510px|Kaleidoscopic Records]]
Kaleidoscopic Records is a record store owned by KaleidoscopicPrism in [[Orange Blossom Beach]] off of Lake Drive.
b8b68e067f093c2f38a4408c22ed60f9b271362a
Kaleidoscopic Records
0
63
307
306
2023-06-28T10:09:22Z
Carsop
4
added category
wikitext
text/x-wiki
[[File:Kaleidoscopic records.png|thumb|510x510px|Kaleidoscopic Records]]
Kaleidoscopic Records is a record store owned by KaleidoscopicPrism in [[Orange Blossom Beach]] off of Lake Drive.
[[Category:Map locations]]
f9396b07bbafd4f06222296972aa24090f5ab7a4
Jerry's Thrift & More Clearance Center
0
120
308
300
2023-06-28T10:09:59Z
Carsop
4
added category
wikitext
text/x-wiki
[[File:Thrift-store-WIP.png|thumb|508x508px|The in-progress Jerry's Thrift & More Clearance Center]]
Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
05921f8b015a11821d204ad230869faed248da56
File:Harpmann office2.png
6
125
309
2023-06-28T10:16:53Z
Carsop
4
wikitext
text/x-wiki
the temporary harpmann office
6c879d342ee2fa865005c4288491770c4e9de48b
Harpmann & Associates
0
126
310
2023-06-28T10:19:43Z
Carsop
4
Created Page
wikitext
text/x-wiki
[[File:Harpmann office3.png|thumb|510x510px|The current Harpmann & Associates office in Wachalassa.]]
[[File:Harpmann ad2.png|thumb|A billboard for Harpmann & Associates outside [[Kaleidoscopic Records]]]]
[[File:Harpmann bombing.png|thumb|510x510px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]]
Harpmann & Associates is a law firm owned by lawyer Earl Harpmann based in [[Orange Blossom Beach]].
Harpmann & Associates has had three offices, with the current office in [[Wachalassa]].
[[File:Harpmann office2.png|thumb|510x510px|The temporary Harpmann & Associates office off US 71.]]
The first Harpmann & Associates office was located in [[Lake Drive Plaza]] but was subsequently bombed by an unknown perpetrator at 6:20 AM on Tuesday June 30th, 2009. There was one death and two injuries in the bombing.
The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off US 71.
[[Category:Map locations]]
[[Category:Lore]]
d81c57faa5a0c4e78ca2edf82d0fadc10ed7a6a4
312
310
2023-06-28T10:21:45Z
Carsop
4
wikitext
text/x-wiki
[[File:Harpmann office3.png|thumb|510x510px|The current Harpmann & Associates office in Wachalassa.]]
[[File:Harpmann bombing.png|thumb|510x510px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]]
Harpmann & Associates is a law firm owned by lawyer Earl Harpmann based in [[Orange Blossom Beach]].
Harpmann & Associates has had three offices, with the current office in [[Wachalassa]].
[[File:Harpmann office2.png|thumb|510x510px|The temporary Harpmann & Associates office off US 71.]]
The first Harpmann & Associates office was located in [[Lake Drive Plaza]] but was subsequently bombed by an unknown perpetrator at 6:20 AM on Tuesday June 30th, 2009. There was one death and two injuries in the bombing.
The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off US 71.
[[Category:Map locations]]
[[Category:Lore]]
fa3dbe067a570f70f04bc967772dad2a4abc380b
315
312
2023-06-28T10:26:22Z
Carsop
4
Fixed image
wikitext
text/x-wiki
[[File:Harpmann office3.png|thumb|510x510px|The current Harpmann & Associates office in Wachalassa.]]
[[File:Harpmann bombing.png|thumb|510x510px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]]
Harpmann & Associates is a law firm owned by lawyer Earl Harpmann based in [[Orange Blossom Beach]].
Harpmann & Associates has had three offices, with the current office in [[Wachalassa]].
[[File:Harpmann office2.png|thumb|510x510px|The temporary Harpmann & Associates office off US 71.]]
[[File:Harpmann ad2 fixed.png|thumb|510x510px|Ad for Harpmann & Associates outside [[Kaleidoscopic Records]].]]
The first Harpmann & Associates office was located in [[Lake Drive Plaza]] but was subsequently bombed by an unknown perpetrator at 6:20 AM on Tuesday June 30th, 2009. There was one death and two injuries in the bombing.
The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off US 71.
[[Category:Map locations]]
[[Category:Lore]]
e654bdc59106f614c34e0d2b80bbd3b2a9834553
File:Harpmann ad2.png
6
122
311
303
2023-06-28T10:20:38Z
Carsop
4
Carsop uploaded a new version of [[File:Harpmann ad2.png]]
wikitext
text/x-wiki
ad for harpmann & associates
f9f5f58434a0cea1d43f2b5a8a77f2e722d925ec
File:Harpmann ad2 fixed.png
6
127
313
2023-06-28T10:22:49Z
Carsop
4
wikitext
text/x-wiki
the old upload refused to work
34ec9ee0643aca764c6d0236c5f6ac1cebe1d797
Discount Tree
0
118
314
298
2023-06-28T10:25:46Z
Carsop
4
removed mentions of dollar tree
wikitext
text/x-wiki
[[File:Discount Tree.png|thumb|508x508px|The front of Discount Tree.]]
Discount Tree is a dollar store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
94c435dc37cdbd0d387316d2e96293e79f2bf585
Orange Blossom Beach
0
33
316
271
2023-06-28T10:27:37Z
Carsop
4
linked harpmann & associates
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s.
It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation.
Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for [[Harpmann & Associates|southern renowned attorney Earl Harpmann]], with his knowledge of the law making him one of the best Lawyers in the area.
[[Category:Map locations]]
c92e04a9c40ad0b36ce3e2e624ce75fef2530516
317
316
2023-06-28T10:28:35Z
Carsop
4
edited link slightly
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s.
It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation.
Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern [[Harpmann & Associates|renowned attorney Earl Harpmann]], with his knowledge of the law making him one of the best Lawyers in the area.
[[Category:Map locations]]
1e8e763ffbf65a61e84be6edf6bac098395ed8a4
Charlotte's Neighborhood Market
0
112
318
291
2023-06-28T10:30:33Z
Carsop
4
edited wording
wikitext
text/x-wiki
[[File:Charlottes market.png|thumb|508x508px|The front of Charlotte's Market during its grand opening.]]
Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
The market is the former location for the first office of [[Harpmann & Associates]].
[[Category:Map locations]]
8c5751507fbae5609e71fef67ffd0f1e024f76e7
354
318
2023-06-28T15:47:03Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Charlottes market.png|thumb|508x508px|The front of Charlotte's Market during its grand opening.]]
Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
The market is the former location for the first office of [[Harpmann & Associates]].
[[Category:Map locations]]
e3c3566327b2587c3391c40cec4a931375cfbca2
File:Filming studio.png
6
128
319
2023-06-28T10:37:15Z
Carsop
4
wikitext
text/x-wiki
filming studio front
38f886856be2c3b4cfd8e40dc22cb9f5eeed5460
Orange Blossom Beach Filming Studio
0
34
320
242
2023-06-28T10:38:00Z
Carsop
4
Changed wording, added image
wikitext
text/x-wiki
[[Category:Map_locations]]
[[File:Filming studio.png|thumb|510x510px|The front of the Orange Blossom Beach Filming Studio.]]
The Orange Blossom Beach Filming Studio is a filming studio located near the [[DuDu]] store in [[Orange Blossom Beach]]. Shows and radio stations based in the filming studio include WOBN-TV Channel 3 News, Prism News, Outburst, and Gulf County Radio.
1bf492d248c52a6f683881c0d57b6df748484e1d
File:Penrose beach access.png
6
129
321
2023-06-28T10:41:12Z
Carsop
4
wikitext
text/x-wiki
penrose front
fd22734b66cce491d19551381aedb6343c934b79
Penrose Beach Access
0
130
322
2023-06-28T10:43:48Z
Carsop
4
Created page
wikitext
text/x-wiki
[[File:Penrose beach access.png|thumb|750x750px|The front of Penrose Beach Access.]]
Penrose Beach Access is a plaza located off State Road 30 in [[Orange Blossom Beach]].
Penrose Beach Access is home to several stores:
Current stores:
* [[Gustav's Antique Store]]
* [[Chinese Food Restaurant]]
* [[Beachside Breakfast]]
[[Category:Map locations]]
ef335af16dbcc7d4616cd20ec5e451dedf51934e
File:Gustav store front.png
6
131
323
2023-06-28T10:47:02Z
Carsop
4
wikitext
text/x-wiki
front
1b78eb3be0ae3f0e1963a6a98ad72bdc7365d924
File:Gustav store inside.png
6
132
324
2023-06-28T10:48:16Z
Carsop
4
wikitext
text/x-wiki
interior
cfa582c0802a0b3e569f3d2854d5eaf59e63193d
Gustav's Antique Store
0
133
325
2023-06-28T10:49:09Z
Carsop
4
created page
wikitext
text/x-wiki
[[File:Gustav store front.png|thumb|510x510px|The front of Gustav's Antique Store]]
[[File:Gustav store inside.png|thumb|510x510px|The interior of Gustav's Antique Store]]
Gustav's Antique Store is a small antique store/thrift shop at the [[Penrose Beach Access]] in [[Orange Blossom Beach]].
fd199efbd9ecee1e254a6299a2f68662ac5e60f7
340
325
2023-06-28T11:13:21Z
Carsop
4
created page
wikitext
text/x-wiki
[[File:Gustav store front.png|thumb|510x510px|The front of Gustav's Antique Store]]
[[File:Gustav store inside.png|thumb|510x510px|The interior of Gustav's Antique Store]]
Gustav's Antique Store is a small antique store/thrift shop at the [[Penrose Beach Access]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
532b4951a69f2e039499e1742aac383b9ba2b188
File:Chinese food front.png
6
134
326
2023-06-28T10:51:12Z
Carsop
4
wikitext
text/x-wiki
chinese food front
3f266d883f8348917ee2b8b81b7e0cb46b9d01c5
Chinese Food Restaurant
0
135
327
2023-06-28T10:52:06Z
Carsop
4
created page
wikitext
text/x-wiki
[[File:Chinese food front.png|thumb|511x511px|The front of the Chinese Food Restauraunt]]
The Chinese Food Restaurant is a grade pending family owned restaurant at [[Penrose Beach Access]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
c7d5d7f10d0b685552391ac2cf6f9d45f621cbd6
355
327
2023-06-28T15:47:13Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Chinese food front.png|thumb|511x511px|The front of the Chinese Food Restauraunt]]
The Chinese Food Restaurant is a grade pending family owned restaurant at [[Penrose Beach Access]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
1140a78688d507628b307659276adb9ace54cfdd
File:Beachside breakfast front.png
6
136
328
2023-06-28T10:54:11Z
Carsop
4
wikitext
text/x-wiki
breakfast_front
3aa2cb26bf3b63b3927c19a3a2dbdee1947a494f
Beachside Breakfast
0
137
329
2023-06-28T10:54:43Z
Carsop
4
Created Page
wikitext
text/x-wiki
[[File:Beachside breakfast front.png|thumb|510x510px|The front of Beachside Breakfast.]]
Beachside Breakfast is a breakfast restaurant at [[Penrose Beach Access]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
386ac5b98be872cea32c556fe857dfc0c46f3fae
351
329
2023-06-28T15:46:25Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Beachside breakfast front.png|thumb|510x510px|The front of Beachside Breakfast.]]
Beachside Breakfast is a breakfast restaurant at [[Penrose Beach Access]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
2dd47bf148e4d791bc1316479a32c5b2f0ff3313
File:Aidens used cars front.png
6
138
330
2023-06-28T10:57:08Z
Carsop
4
wikitext
text/x-wiki
front
1b78eb3be0ae3f0e1963a6a98ad72bdc7365d924
Aiden's Used Cars
0
139
331
2023-06-28T10:58:06Z
Carsop
4
Created page
wikitext
text/x-wiki
[[File:Aidens used cars front.png|thumb|510x510px|The front of Aiden's Used Cars.]]
Aiden's Used Cars is a used car dealership off of state road 30 in [[Orange Blossom Beach]].
0b487536ad743419f27929338296e9158f7badab
332
331
2023-06-28T10:58:31Z
Carsop
4
capitalization error
wikitext
text/x-wiki
[[File:Aidens used cars front.png|thumb|510x510px|The front of Aiden's Used Cars.]]
Aiden's Used Cars is a used car dealership off of State Road 30 in [[Orange Blossom Beach]].
28f3987e603ef064d0dc9885d53dfa89cbb1c937
333
332
2023-06-28T10:59:39Z
Carsop
4
added category
wikitext
text/x-wiki
[[File:Aidens used cars front.png|thumb|510x510px|The front of Aiden's Used Cars.]]
Aiden's Used Cars is a used car dealership off of State Road 30 in [[Orange Blossom Beach]].
[[Category:Map locations]]
4fd5aa8c17b1bb775983ef1255e75ed74f05f16f
349
333
2023-06-28T15:46:01Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Aidens used cars front.png|thumb|510x510px|The front of Aiden's Used Cars.]]
Aiden's Used Cars is a used car dealership off of State Road 30 in [[Orange Blossom Beach]].
[[Category:Map locations]]
d3bfef4658c0c66a6b532988fe3204251deb2ae0
File:Beltonview outside.png
6
140
334
2023-06-28T11:02:39Z
Carsop
4
wikitext
text/x-wiki
office
e6427457497fe0f4f93a7334d2203b8e17ee82df
Beltonview Offices
0
141
335
2023-06-28T11:07:57Z
Carsop
4
Created Page
wikitext
text/x-wiki
[[File:Beltonview outside.png|thumb|361x361px|The exterior of Beltonview Offices]]
Beltonview Offices is a five-story office building with first-floor parking in [[Orange Blossom Beach]].
Beltonview Offices is home to several offices:
Current Offices:
* [[Hat Studios LLC]]
* [[Places Group]]
* [[Arenin Accounting Regional Office]]
[[Category:Map locations]]
d97878b07cddcd02a0a4527beacaccd5a8d2fbd6
352
335
2023-06-28T15:46:35Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Beltonview outside.png|thumb|361x361px|The exterior of Beltonview Offices]]
Beltonview Offices is a five-story office building with first-floor parking in [[Orange Blossom Beach]].
Beltonview Offices is home to several offices:
Current Offices:
* [[Hat Studios LLC]]
* [[Places Group]]
* [[Arenin Accounting Regional Office]]
[[Category:Map locations]]
539e2dcef158a64a6174295b176043cb99c53eb2
File:Hat Studios Front.png
6
142
336
2023-06-28T11:08:58Z
Carsop
4
wikitext
text/x-wiki
hat studios
a361984a447f62fdc527f551484aa6919eb6bbfa
Hat Studios LLC
0
143
337
2023-06-28T11:09:32Z
Carsop
4
created page
wikitext
text/x-wiki
[[File:Hat Studios Front.png|thumb|510x510px|The entrance to Hat Studios LLC.]]
Hat Studios LLC is a videogame studio located in [[Beltonview Offices]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
41f56544e80655f09e9d0e5d70f09c4770f59cef
File:Places Group Front.png
6
144
338
2023-06-28T11:11:17Z
Carsop
4
wikitext
text/x-wiki
places group
b474e4e401b55e685431d495caa503dd1e528832
Places Group
0
145
339
2023-06-28T11:11:56Z
Carsop
4
Created Page
wikitext
text/x-wiki
[[File:Places Group Front.png|thumb|510x510px|The entrance to Places Group.]]
Places Group is a office<!-- idk what places group does --> in [[Beltonview Offices]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
83569e7d1e81a343e92a211fc9466607fe65ba1f
File:Arenin regional office.png
6
146
341
2023-06-28T11:15:45Z
Carsop
4
wikitext
text/x-wiki
arenin office
c154b42dcbda2688b11db8eafc75a46721546a93
Arenin Accounting Regional Office
0
147
342
2023-06-28T11:16:27Z
Carsop
4
Created Page
wikitext
text/x-wiki
[[File:Arenin regional office.png|thumb|387x387px|The Entrance to the Arenin Accounting Regional Office.]]
The Arenin Accounting Regional Office is the [[Arenin Accounting]] regional office for [[Orange Blossom Beach]] inside [[Beltonview Offices]].
[[Category:Map locations]]
1df415df5b088f60ec7eacc7a5b07a352b705da8
350
342
2023-06-28T15:46:14Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Arenin regional office.png|thumb|387x387px|The Entrance to the Arenin Accounting Regional Office.]]
The Arenin Accounting Regional Office is the [[Arenin Accounting]] regional office for [[Orange Blossom Beach]] inside [[Beltonview Offices]].
[[Category:Map locations]]
47edeb78a4f79ee8200dfb41cdbb9e2a6cabe47c
File:Monwell apartments outside.png
6
148
343
2023-06-28T11:18:39Z
Carsop
4
wikitext
text/x-wiki
monwell
a78e397bba497e6a82da79499560757d8786bab8
Monwell Apartments
0
149
344
2023-06-28T11:19:52Z
Carsop
4
Created Page
wikitext
text/x-wiki
[[File:Monwell apartments outside.png|thumb|460x460px|The exterior of Monwell Apartments.]]
Monwell Apartments is an apartment complex located in [[Orange Blossom Beach]] outside of [[Wachalassa]]
[[Category:Map locations]]
9ab8e67e56e2c933a424766a6003feb69731f2f7
File:Rockson outside.png
6
150
345
2023-06-28T11:21:41Z
Carsop
4
wikitext
text/x-wiki
rockson
98f68a68d58a6679ca2a3bcbfe5318acb1e5a05d
Rockson-Bauer Apartment Complex
0
151
346
2023-06-28T11:22:22Z
Carsop
4
Created Page
wikitext
text/x-wiki
[[File:Rockson outside.png|thumb|460x460px|The exterior of the Rockson-Bauer Apartment Complex]]
The Rockson-Bauer Apartment Complex is an apartment complex in [[Orange Blossom Beach]] next to the [[Orange Blossom Beach Filming Studio]].
[[Category:Map locations]]
c1ee0f44952d219b037edc3d50de33d9869d4876
File:Sunset groves.png
6
152
347
2023-06-28T11:24:38Z
Carsop
4
wikitext
text/x-wiki
exterior
8b112ee8cb347858b85531bdadbcd35672f66b7f
Sunset Groves Apartment Complex
0
153
348
2023-06-28T11:32:40Z
Carsop
4
Created Page
wikitext
text/x-wiki
[[File:Sunset groves.png|thumb|649x649px|The exterior of the Sunset Groves Apartment Complex.]]
The Sunset Groves Apartment Complex is an apartment complex in [[Orange Blossom Beach]] off US 71.
[[Category:Map locations]]
5d35a131f68107d9f0ebee73b9fed0ebf9e39fe7
Blossom Photography
0
116
353
295
2023-06-28T15:46:50Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Blossom photography.png|thumb|435x435px|The front of Blossom Photography.]]
Blossom Photography is a professional photo studio in the [[Lake Drive Plaza]] located in [[Orange Blossom Beach]].
[[Category:Map locations]]
f9148189fafa84120192cf3c1cdcceac508963e1
Craig World Cafe
0
108
356
285
2023-06-28T15:47:28Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Cwc.png|thumb|508x508px|The front of the Craig World Cafe.]]
The Craig World Cafe is a Cafe in [[Orange Blossom Beach]]. The Craig World Cafe was opened in 2004 and is owned and operated by Craig (last name).
[[Category:Map locations]]
7c524539ba4aeb4b6fd79eaefd71b6cf6f82379b
Harpmann & Associates
0
126
357
315
2023-06-28T15:47:56Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Harpmann office3.png|thumb|510x510px|The current Harpmann & Associates office in Wachalassa.]]
[[File:Harpmann bombing.png|thumb|510x510px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]]
Harpmann & Associates is a law firm owned by lawyer Earl Harpmann based in [[Orange Blossom Beach]].
Harpmann & Associates has had three offices, with the current office in [[Wachalassa]].
[[File:Harpmann office2.png|thumb|510x510px|The temporary Harpmann & Associates office off US 71.]]
[[File:Harpmann ad2 fixed.png|thumb|510x510px|Ad for Harpmann & Associates outside [[Kaleidoscopic Records]].]]
The first Harpmann & Associates office was located in [[Lake Drive Plaza]] but was subsequently bombed by an unknown perpetrator at 6:20 AM on Tuesday June 30th, 2009. There was one death and two injuries in the bombing.
The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off US 71.
[[Category:Map locations]]
[[Category:Lore]]
8f6180713663fb2b54ee09f1dbbc765d5dbce4c5
378
357
2023-06-28T21:36:32Z
Carsop
4
wikitext
text/x-wiki
{{stub}}
[[File:Harpmann office3.png|thumb|510x510px|The current Harpmann & Associates office in Wachalassa.]]
[[File:Harpmann bombing.png|thumb|510x510px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]]
Harpmann & Associates is a law firm owned by lawyer Earl Harpmann based in [[Orange Blossom Beach]].
Harpmann & Associates has had three offices, with the current office in [[Wachalassa]].
[[File:Harpmann office2.png|thumb|510x510px|The temporary Harpmann & Associates office off US 71.]]
[[File:Harpmann ad2 fixed.png|thumb|510x510px|Ad for Harpmann & Associates outside [[Kaleidoscopic Records]].]]
The first Harpmann & Associates office was located in [[Lake Drive Plaza]] but was subsequently bombed by an unknown perpetrator at 6:20 AM on Tuesday June 30th, 2009. There was one death and two injuries in the bombing. The office was replaced with [[Charlotte's Neighborhood Market]].
The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off US 71.
[[Category:Map locations]]
[[Category:Lore]]
c4e0f3ee986700b182fd03846146f3a975c5d44c
Hat Studios LLC
0
143
358
337
2023-06-28T15:48:15Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Hat Studios Front.png|thumb|510x510px|The entrance to Hat Studios LLC.]]
Hat Studios LLC is a game development studio located in [[Beltonview Offices]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
52299d8ad5e2c34f89173923496b36aa2f0b08ee
359
358
2023-06-28T15:50:58Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}''It is being considered on whether to combine this article into [[Beltonview Offices]] or not.
''[[File:Hat Studios Front.png|thumb|510x510px|The entrance to Hat Studios LLC.]]
Hat Studios LLC is a game development studio located in [[Beltonview Offices]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
cd8e2b287cc1fde889efcca491dedf6120fe3cad
360
359
2023-06-28T15:52:38Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}} ''It is being considered on whether to combine this article into [[Beltonview Offices]] or not.
''[[File:Hat Studios Front.png|thumb|510x510px|The entrance to Hat Studios LLC.]]
Hat Studios LLC is a game development studio located in [[Beltonview Offices]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
76c14334d742819e93cf8b3f47fca4aba72f5002
Italy Pizza
0
110
361
290
2023-06-28T15:53:03Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Italy pizza.png|thumb|508x508px|The front of Italy Pizza.]]
Italy Pizza is a pizza place in [[Orange Blossom Beach]].
Italy Pizza claims to be (and used to be) authentic, but the pizza is frozen.
Italy Pizza has been shutdown once due to a rat infestation, but has reopened since.
[[Category:Map locations]]
3d5eeb3464567fef97c58f712145a93396d2d98d
395
361
2023-06-28T22:46:07Z
Carsop
4
wikitext
text/x-wiki
{{stub}}
[[File:Italy pizza.png|thumb|508x508px|Italy Pizza on March 17th 2009.]]
Italy Pizza is a pizza place in [[Orange Blossom Beach]].
Italy Pizza claims to be (and used to be) authentic, but the pizza is frozen.
Italy Pizza has been shutdown once due to a rat infestation, but has reopened since.
[[Category:Map locations]]
7d5797dba28e425aea40056c83046bb0723af0d2
Jerry's Thrift & More Clearance Center
0
120
362
308
2023-06-28T15:53:15Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}} ''It is being considered on whether to combine this article into [[Beltonview Offices]] or not.
[[File:Thrift-store-WIP.png|thumb|508x508px|The in-progress Jerry's Thrift & More Clearance Center]]
Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
dd138867087bb6c8dc9349a25dab0f099cc2504f
363
362
2023-06-28T15:53:27Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Thrift-store-WIP.png|thumb|508x508px|The in-progress Jerry's Thrift & More Clearance Center]]
Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
96d1c968bb0e8129a901f5ac60517188e96b5fb7
399
363
2023-06-28T22:54:59Z
Carsop
4
wikitext
text/x-wiki
{{stub}}
[[File:Thrift-store-WIP.png|thumb|508x508px|The in-progress Jerry's Thrift & More Clearance Center as of January 18th 2009.]]
Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
ffa7e56674ba124e1d1d486708d7eae7ebfc5bbe
Kaleidoscopic Records
0
63
364
307
2023-06-28T15:53:40Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Kaleidoscopic records.png|thumb|510x510px|Kaleidoscopic Records]]
Kaleidoscopic Records is a record store owned by KaleidoscopicPrism in [[Orange Blossom Beach]] off of Lake Drive.
[[Category:Map locations]]
69167c4f9fefd755d0b9a776bc1f433e7f60e66f
Monwell Apartments
0
149
365
344
2023-06-28T15:54:08Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Monwell apartments outside.png|thumb|460x460px|The exterior of Monwell Apartments.]]
Monwell Apartments is an apartment complex located in [[Orange Blossom Beach]] outside of [[Wachalassa]]
[[Category:Map locations]]
ca501bdd1ff6cf2d15fcfdb2f9afef0b98a811e9
Northwest Florida Regional Airport
0
99
366
279
2023-06-28T15:54:21Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Nfra airport.png|thumb|508x508px|The front of the Northwest Florida Regional Airport as seen in-game.]]
[[File:Terminal.png|thumb|508x508px|The terminal of the Northwest Florida Regional Airport]]
The Northwest Florida Regional Airport is a small airport in [[Orange Blossom Beach]]. The Northwest Florida Regional Airport consists of one terminal, an [https://en.wikipedia.org/wiki/Enterprise_Rent-A-Car Enterprise Rent-A-Car], two hangars, and one runway. The airport has two airlines: [https://en.wikipedia.org/wiki/United_Airlines United Airlines] and [https://en.wikipedia.org/wiki/Delta_Air_Lines Delta Air Lines] along with a closed check-in counter for [https://en.wikipedia.org/wiki/Southwest_Airlines Southwest Airlines]. The airport is across from [[Star Gas]].
[[Category:Map locations]]
4b74913338d86e89e2676792747c19853fe406c0
Orange Blossom Beach Filming Studio
0
34
367
320
2023-06-28T15:54:34Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[Category:Map_locations]]
[[File:Filming studio.png|thumb|510x510px|The front of the Orange Blossom Beach Filming Studio.]]
The Orange Blossom Beach Filming Studio is a filming studio located near the [[DuDu]] store in [[Orange Blossom Beach]]. Shows and radio stations based in the filming studio include WOBN-TV Channel 3 News, Prism News, Outburst, and Gulf County Radio.
544ba25169cb98fcb03887aa31589557a07f9efe
403
367
2023-06-28T23:12:39Z
Carsop
4
wikitext
text/x-wiki
{{stub}}
[[Category:Map_locations]]
[[File:Filming studio.png|thumb|510x510px|The front of the Orange Blossom Beach Filming Studio.]]
The Orange Blossom Beach Filming Studio is a filming studio next to the [[Rockson-Bauer Apartment Complex]] in [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. Shows and radio stations based in the filming studio include WOBN-TV Channel 3 News, Prism News, Outburst, and Gulf County Radio.
25cb2eef7fe6d48d2d7fe222ca744609bbf055ff
Places Group
0
145
368
339
2023-06-28T15:54:49Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}} ''It is being considered on whether to combine this article into [[Beltonview Offices]] or not.
[[File:Places Group Front.png|thumb|510x510px|The entrance to Places Group.]]
Places Group is a office<!-- idk what places group does --> in [[Beltonview Offices]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
6c23495abbb2c313115c12001dcc0ae7124a1b3c
Rockson-Bauer Apartment Complex
0
151
369
346
2023-06-28T15:55:34Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Rockson outside.png|thumb|460x460px|The exterior of the Rockson-Bauer Apartment Complex]]
The Rockson-Bauer Apartment Complex is an apartment complex in [[Orange Blossom Beach]] next to the [[Orange Blossom Beach Filming Studio]].
[[Category:Map locations]]
3a36e3a8e6e2a6496555cffdfb8caa77ce64d24a
Shiloh Springs
0
98
370
281
2023-06-28T15:55:45Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Shiloh springs sign.png|thumb|550x550px|The entrance to Shiloh Springs]]
Shiloh Springs is an [https://en.wikipedia.org/wiki/Unincorporated_area unincorporated community] outside of [[Orange Blossom Beach]].
Shiloh Springs has a population of 59.
[[Category:Map locations]]
14e76f6bdaee28c24a4a89e8aaf4e4be312ed446
Soap & Suds Laundromat
0
106
371
283
2023-06-28T15:55:57Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Soap and suds interior.png|thumb|508x508px|The inside of the Soap & Suds Laundromat.]]
The Soap & Suds Laundromat is a laundromat located in [[Orange Blossom Beach]].
[[Category:Map locations]]
7fe1bf6262caab172f0c13a6c3fb8ac4ad7a8487
Star Gas
0
101
372
276
2023-06-28T15:56:12Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Star Gas.png|thumb|520x520px|Star Gas as seen in Orange Blossom Beach.]]
Star Gas is a gas station located in [[Orange Blossom Beach]] across from the [[Northwest Florida Regional Airport]]. Star Gas is known for having high gas prices to take advantage of people returning rental cars. Star Gas consists of eight gas pumps, a food mart and a certified truck scale.
[[Category:Map locations]]
74e3278b0c622bf736e48b24ba17af514245aa59
Sunset Groves Apartment Complex
0
153
373
348
2023-06-28T15:56:22Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}}
[[File:Sunset groves.png|thumb|649x649px|The exterior of the Sunset Groves Apartment Complex.]]
The Sunset Groves Apartment Complex is an apartment complex in [[Orange Blossom Beach]] off US 71.
[[Category:Map locations]]
e225ae06c260e6570cd840957878d46058eaaf63
Arenin Accounting Regional Office
0
147
374
350
2023-06-28T15:56:59Z
Vorlitix
3
wikitext
text/x-wiki
{{stub}} ''It is being considered on whether to combine this article into [[Beltonview Offices]] or not.
[[File:Arenin regional office.png|thumb|387x387px|The Entrance to the Arenin Accounting Regional Office.]]
The Arenin Accounting Regional Office is the [[Arenin Accounting]] regional office for [[Orange Blossom Beach]] inside [[Beltonview Offices]].
[[Category:Map locations]]
247a69ed9d52e084c2eaeacd4c813ed1d82c48d1
File:Cwc.png
6
107
375
284
2023-06-28T19:12:59Z
Vorlitix
3
Vorlitix uploaded a new version of [[File:Cwc.png]]
wikitext
text/x-wiki
the craig world cafe
7f32cd9fb857f0ec1757f8be116ade0b0da2acf4
Craig World Cafe
0
108
376
356
2023-06-28T20:18:14Z
Vorlitix
3
Huge craig world cafe expansion wow
wikitext
text/x-wiki
{{stub}}
[[File:Cwc.png|thumb|276x276px|The Exterior of the Craig World Cafe in Orange Blossom Beach, Florida, on January 11, 2009.]]
The Craig World Cafe is a family-run American coffee shop founded by Craig W. Tourbière. Despite being based around being family owned, this has not stopped Craig World Cafe from turning into a close-radius chain. All 4 of the Craig World Cafe locations are located within northwest Florida, with the first Craig World Cafe opening in 2004 in [[Orange Blossom Beach]].
After opening their first location on April 9th, 2004, the chain expanded into [https://en.wikipedia.org/wiki/Apalachicola,_Florida Apalachicola, Florida] in November of the same year after critical acclaim within [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County]. Construction for this new location was finished in 2005, and by late 2007, the chain had already grown to have 3 locations within northwestern Florida. Another Craig World Cafe would be opened within early 2008 in [https://en.wikipedia.org/wiki/Tallahassee,_Florida Tallahassee, Florida]. Tourbière has expressed and announced further plans to expand into other parts of the state, such as [https://en.wikipedia.org/wiki/Pensacola,_Florida Pensacola, Florida], and even [https://en.wikipedia.org/wiki/Mobile,_Alabama Mobile, Alabama].
== Menu ==
The menu of Craig World Cafe mostly consists of beverages, specifically caffeinated ones such as espressos, cappuccinos, lattes, americanos, and mochas.
Craig World Cafe also presents pastries, salads, breakfast items, and deserts along side their drinks.
== Locations ==
=== U.S Locations ===
[[Orange Blossom Beach|Orange Blossom Beach, Florida]]
[https://en.wikipedia.org/wiki/Apalachicola,_Florida Apalachicola, Florida]
[https://en.wikipedia.org/wiki/Panama_City_Beach,_Florida Panama City, Florida]
[https://en.wikipedia.org/wiki/Tallahassee,_Florida Tallahassee, Florida]
[[Category:Map locations]]
c745a36d5acd6c8f2cd1ba247ea51815eb61dad7
Orange Blossom Beach
0
33
377
317
2023-06-28T20:25:05Z
Vorlitix
3
Adjusted some things
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a city in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. The city sits at a total population of around 33,105 as of the [https://en.wikipedia.org/wiki/2000_United_States_census 2000 U.S. census]. It sits a few miles out of [https://en.wikipedia.org/wiki/Panama_City,_Florida Panama City] and was established as an outpost by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s.
It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation.
Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. The city is quite notable due to it's delicious array of mouth-watering food spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern [[Harpmann & Associates|renowned attorney Earl Harpmann]], with his knowledge of the law making him one of the best Lawyers in the area. Orange Blossom Beach is also the origin of [[Si Cola Inc.|Si Cola Corporation]].
[[Category:Map locations]]
ecb0645109fee9c20220382a6fcbd1f3f8b00207
Discount Tree
0
118
379
314
2023-06-28T21:39:19Z
Carsop
4
wikitext
text/x-wiki
{{Stub}}[[File:Discount Tree.png|thumb|508x508px|The front of Discount Tree.]]
Discount Tree is a dollar store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
8650193f16970062d6fa80ac5046c2595eebc9ef
391
379
2023-06-28T22:37:06Z
Carsop
4
wikitext
text/x-wiki
{{Stub}}
[[File:Discount Tree.png|thumb|508x508px|The front of Discount Tree.]]
Discount Tree is a dollar store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
1b3d38bb4ac2ed42bff53e71b679f9f5705d9518
397
391
2023-06-28T22:51:15Z
Carsop
4
wikitext
text/x-wiki
{{Stub}}
[[File:Discount Tree.png|thumb|510x510px|The Discount Tree in Orange Blossom Beach on February 7th 2009.]]
Discount Tree is a dollar store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
e7462b15892bd219c158fd3410a4cab9ca72ca8a
Gustav's Antique Store
0
133
380
340
2023-06-28T21:40:00Z
Carsop
4
wikitext
text/x-wiki
{{Stub}}[[File:Gustav store front.png|thumb|510x510px|The front of Gustav's Antique Store]]
[[File:Gustav store inside.png|thumb|510x510px|The interior of Gustav's Antique Store]]
Gustav's Antique Store is a small antique store/thrift shop at the [[Penrose Beach Access]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
60a3c13c5cc0311c195ccbe168bc757a9883221b
File:Aiden's used cars new.png
6
154
381
2023-06-28T21:55:50Z
Carsop
4
wikitext
text/x-wiki
new
c2a6b03f190dfb2b4aa91f8af8d477a9bc3401dc
File:Lake drive plaza.png
6
113
382
292
2023-06-28T22:05:23Z
Carsop
4
Carsop uploaded a new version of [[File:Lake drive plaza.png]]
wikitext
text/x-wiki
the lake drive plaza
5f9681edcb901da330a6c3e7049e429c4882e9cb
File:Charlottes market.png
6
111
383
288
2023-06-28T22:06:50Z
Carsop
4
Carsop uploaded a new version of [[File:Charlottes market.png]]
wikitext
text/x-wiki
the front of charlotte's market
e99f6c2d12c4609e2420d324a26f8284435e932e
Charlotte's Neighborhood Market
0
112
384
354
2023-06-28T22:09:54Z
Carsop
4
wikitext
text/x-wiki
{{stub}}
[[File:Charlottes market.png|thumb|507x507px|The front of Charlotte's Market during its grand opening.]]
Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
The market is the former location for the first office of [[Harpmann & Associates]].
[[Category:Map locations]]
21642280bc5c9900ca3dc7cd16d4aab854551bbf
398
384
2023-06-28T22:52:41Z
Carsop
4
wikitext
text/x-wiki
{{stub}}
[[File:Charlottes market.png|thumb|507x507px|The front of Charlotte's Market during its grand opening on May 26th 2009.]]
Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
The market is the former location for the first office of [[Harpmann & Associates]].
[[Category:Map locations]]
31f4e17900870ecc361e4841cc7d2253be14f5bf
Lake Drive Plaza
0
114
385
301
2023-06-28T22:11:17Z
Carsop
4
wikitext
text/x-wiki
[[File:Lake drive plaza.png|thumb|755x755px|The Lake Drive Plaza strip mall.<!-- Image must be updated when Jerry's Thrift & More Clearance Center is finished. -->]]
Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]].
The Lake Drive Plaza has been home to several stores:
Current Stores:
* [[Charlotte's Neighborhood Market]]
* [[Blossom Photography]]
* [[Taco Ball]]
* [[Discount Tree]]
* [[Jerry's Thrift & More Clearance Center]]
Former Stores:
* [[Harpmann & Associates]]
[[Category:Map locations]]
6ab064584bf5e99c621fbeff64c3dcc64c90cec0
386
385
2023-06-28T22:15:09Z
Carsop
4
wikitext
text/x-wiki
[[File:Lake drive plaza.png|thumb|700x700px|The Lake Drive Plaza strip mall.<!-- Image must be updated when Jerry's Thrift & More Clearance Center is finished. -->]]
Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]].
The Lake Drive Plaza has been home to several stores:
Current Stores:
* [[Charlotte's Neighborhood Market]]
* [[Blossom Photography]]
* [[Taco Ball]]
* [[Discount Tree]]
* [[Jerry's Thrift & More Clearance Center]]
Former Stores:
* [[Harpmann & Associates]]
[[Category:Map locations]]
b8f17f097f50faef55b1dbd82296bd762827cb9a
394
386
2023-06-28T22:44:31Z
Carsop
4
wikitext
text/x-wiki
[[File:Lake drive plaza.png|thumb|700x700px|The Lake Drive Plaza strip mall on May 5th 2009.<!-- Image must be updated when Jerry's Thrift & More Clearance Center is finished. -->]]
Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]].
The Lake Drive Plaza has been home to several stores:
Current Stores:
* [[Charlotte's Neighborhood Market]]
* [[Blossom Photography]]
* [[Taco Ball]]
* [[Discount Tree]]
* [[Jerry's Thrift & More Clearance Center]]
Former Stores:
* [[Harpmann & Associates]]
[[Category:Map locations]]
9945d098c87e1c7d646482629512710d10df7f65
396
394
2023-06-28T22:49:16Z
Carsop
4
wikitext
text/x-wiki
[[File:Lake drive plaza.png|thumb|700x700px|The Lake Drive Plaza strip mall on May 5th 2009.<!-- Image must be updated when Jerry's Thrift & More Clearance Center is finished. -->]]
Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]]. Lake Drive Plaza was opened on September 26th 1968.
The Lake Drive Plaza has been home to several stores:
Current Stores:
* [[Charlotte's Neighborhood Market]]
* [[Blossom Photography]]
* [[Taco Ball]]
* [[Discount Tree]]
* [[Jerry's Thrift & More Clearance Center]]
Former Stores:
* [[Harpmann & Associates]]
[[Category:Map locations]]
a69ce7e1adbbc099472024ad6ba81d307966bbfe
Aiden's Used Cars
0
139
387
349
2023-06-28T22:16:28Z
Carsop
4
wikitext
text/x-wiki
{{stub}}
[[File:Aiden's used cars new.png|thumb|510x510px|The front of Aiden's Used Cars as of April 5th 2009.]]
Aiden's Used Cars is a used car dealership off of State Road 30 in [[Orange Blossom Beach]]. Aiden's Used Cars was opened in 2005 by Aiden Jones.
[[Category:Map locations]]
0c5b79fb56cf5ce98ac7b9c4bfa2d867735a4d1f
File:Blossom photography.png
6
115
388
294
2023-06-28T22:18:34Z
Carsop
4
Carsop uploaded a new version of [[File:Blossom photography.png]]
wikitext
text/x-wiki
the front of blossom photography
98229ea9d37626f591eeff28ed3c6bd0a169e94c
Blossom Photography
0
116
389
353
2023-06-28T22:21:23Z
Carsop
4
wikitext
text/x-wiki
{{stub}}
[[File:Blossom photography.png|thumb|434x434px|The front of Blossom Photography.]]
Blossom Photography is a professional photo studio in the [[Lake Drive Plaza]] located in [[Orange Blossom Beach]].
[[Category:Map locations]]
53c86f569d17705325a5df79089aec442d210d52
File:Discount Tree.png
6
117
390
297
2023-06-28T22:22:42Z
Carsop
4
Carsop uploaded a new version of [[File:Discount Tree.png]]
wikitext
text/x-wiki
front of discount tree
cefb60bce6a8e8237b45e2928161533732b869df
File:Thrift-store-WIP.png
6
119
392
299
2023-06-28T22:40:18Z
Carsop
4
Carsop uploaded a new version of [[File:Thrift-store-WIP.png]]
wikitext
text/x-wiki
wip thrift store
36c0a4aff1f9ed8169ab12c5186151d79c59c8d2
File:Italy pizza.png
6
109
393
286
2023-06-28T22:43:47Z
Carsop
4
Carsop uploaded a new version of [[File:Italy pizza.png]]
wikitext
text/x-wiki
italy pizza
2c4c1ab65bae70b673ffa6e0b08fb979f75946a6
File:Dudu exterior.png
6
155
400
2023-06-28T23:03:31Z
Carsop
4
wikitext
text/x-wiki
dudu exterior
dd492bd7d51e437e0b579313d02f9aafaf3f2569
File:Dudu interior.png
6
156
401
2023-06-28T23:06:27Z
Carsop
4
wikitext
text/x-wiki
dudu interior
e84522805a37410029dbffc7ca10b90289ecf81a
DuDu
0
157
402
2023-06-28T23:10:06Z
Carsop
4
created page
wikitext
text/x-wiki
{{Stub}}
[[File:Dudu exterior.png|thumb|510x510px|The DuDu store in Orange Blossom Beach on March 23rd 2009.]]
[[File:Dudu interior.png|thumb|510x510px|The interior of the DuDu store in Orange Blossom Beach.]]
DuDu is a Chinese international electronics company created by Stove Jeebs. DuDu is based in Yantai, China. DuDu has a store in [[Orange Blossom Beach|Orange Blossom Beach, Florida]] next to the [[Publix]] and [[Shell]] off Lake Drive. DuDu is known for creating cheap, low-quality electronic devices.
List of electronic devices created by DuDu:
* Action Phone 1
* Action Phone 2G
* Unnamed Laptop
* Bravery TV
* Unnamed Wi-Fi Router
* <s>The iToilet</s>
8dd1c6725de969144b9907d7ef006b381deb47e6
406
402
2023-06-28T23:25:29Z
Carsop
4
added category
wikitext
text/x-wiki
{{Stub}}
[[File:Dudu exterior.png|thumb|510x510px|The DuDu store in Orange Blossom Beach on March 23rd 2009.]]
[[File:Dudu interior.png|thumb|510x510px|The interior of the DuDu store in Orange Blossom Beach.]]
DuDu is a Chinese international electronics company created by Stove Jeebs. DuDu is based in Yantai, China. DuDu has a store in [[Orange Blossom Beach|Orange Blossom Beach, Florida]] next to the [[Publix]] and [[Shell]] off Lake Drive. DuDu is known for creating cheap, low-quality electronic devices.
List of electronic devices created by DuDu:
* Action Phone 1
* Action Phone 2G
* Unnamed Laptop
* Bravery TV
* Unnamed Wi-Fi Router
* <s>The iToilet</s>
[[Category:Map locations]]
14cc0a14dc8a8e63067e9e3eddf4d9b903ed73a5
File:City dump.png
6
158
404
2023-06-28T23:17:26Z
Carsop
4
wikitext
text/x-wiki
the dump
yeah
38dc76964a4bea690229aa51065ac36e70f51d77
Orange Blossom City Dump
0
159
405
2023-06-28T23:21:02Z
Carsop
4
Created Page
wikitext
text/x-wiki
{{Stub}}
[[File:City dump.png|thumb|750x750px|The back of the Orange Blossom City Dump.]]
The Orange Blossom City Dump is the landfill/junkyard for [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. The dump is located in [[Wachalassa]] next to [[Monwell Apartments]].
aed13cf850068188b1030933f6193b387861b0b0
Orange Blossom City Dump
0
159
407
405
2023-06-28T23:25:48Z
Carsop
4
added category
wikitext
text/x-wiki
{{Stub}}
[[File:City dump.png|thumb|750x750px|The back of the Orange Blossom City Dump.]]
The Orange Blossom City Dump is the landfill/junkyard for [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. The dump is located in [[Wachalassa]] next to [[Monwell Apartments]].
[[Category:Map locations]]
79f32e5417668e790f685ed503c6e11c6fb0046e
File:Self storage.png
6
160
408
2023-06-28T23:28:51Z
Carsop
4
wikitext
text/x-wiki
self stroage
d90b1ca0f62bdb88f0b6be5a444946df28243a7d
Orange Blossom Beach Self Storage
0
161
409
2023-06-28T23:39:49Z
Carsop
4
Created Page
wikitext
text/x-wiki
{{Stub}}
[[File:Self storage.png|thumb|750x750px|Orange Blossom Beach Self Storage as of May 2nd, 2009.]]
Orange Blossom Beach Self Storage is a Self Storage building in [[Orange Blossom Beach|Orange Blossom Beach, Florida]] next to the [[Orange Blossom Beach Community Center]] off US 71. There are 37 storage units, five of which are XL (one of which is the office for the self storage), seven are refrigerated (one is refrigerated and XL). 12/37 storage units are occupied.
[[Category:Map locations]]
5895947a6edeae452c86f07a473b45cf5596b3d8
414
409
2023-06-28T23:57:55Z
Vorlitix
3
wikitext
text/x-wiki
{{Stub}}
[[File:Self storage.png|thumb|530x530px|Orange Blossom Beach Self Storage as of May 2nd, 2009.]]
Orange Blossom Beach Self Storage is a Self Storage building in [[Orange Blossom Beach|Orange Blossom Beach, Florida]] next to the [[Orange Blossom Beach Community Center]] off US 71. There are 37 storage units, five of which are XL (one of which is the office for the self storage), seven are refrigerated (one is refrigerated and XL). 12/37 storage units are occupied.
[[Category:Map locations]]
2f5e1ea5d4966d0f85586c253d7b0a32ed426da9
File:Community center exterior.png
6
162
410
2023-06-28T23:47:58Z
Carsop
4
wikitext
text/x-wiki
exterior
8b112ee8cb347858b85531bdadbcd35672f66b7f
Orange Blossom Beach Community Center
0
163
411
2023-06-28T23:49:57Z
Carsop
4
created page, will add more soon
wikitext
text/x-wiki
[[File:Community center exterior.png|thumb|750x750px|The outside of the Orange Blossom Beach Community Center on January 12th 2009.]]
The Orange Blossom Beach Community Center is the community center for [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. The community center is off US 71 and is next to the [[7-Eleven]] and [[Orange Blossom Beach Self Storage]].
[[Category:Map locations]]
2288f0ed860c7282b1749ba11336a1e1d65e11fa
416
411
2023-06-29T00:01:37Z
Carsop
4
finished page
wikitext
text/x-wiki
{{Stub}}[[File:Community center exterior.png|thumb|750x750px|The outside of the Orange Blossom Beach Community Center on January 12th 2009.]]
The Orange Blossom Beach Community Center is the community center for [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. The community center is off US 71 and is next to the [[7-Eleven]], [[Orange Blossom Beach Self Storage]], and the [[Orange Blossom Beach City Park]]. The community center consists of several commons rooms, a meeting room, several offices, a stage room, the Orange Blossom Beach Public Library, a gym, and several other miscellaneous rooms. Various murals are present on the exterior walls of the community center.
[[Category:Map locations]]
a1aa515401e95584f43a15264cef04148cc081a7
Orange Blossom Beach Public Library
0
164
412
2023-06-28T23:52:02Z
Carsop
4
created page, its just a redirect
wikitext
text/x-wiki
#REDIRECT [[Orange Blossom Beach Community Center]]
536eeb973fbebb6cdb6a26cf3302719d071eea89
Jerry's Thrift & More Clearance Center
0
120
413
399
2023-06-28T23:53:15Z
Carsop
4
wikitext
text/x-wiki
{{stub}}
[[File:Thrift-store-WIP.png|thumb|600x600px|The in-progress Jerry's Thrift & More Clearance Center as of January 18th 2009.]]
Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]].
[[Category:Map locations]]
cb71bab997d1cb623b1736d5ffdd3d31cdeaedf2
Template:Gallery
10
165
415
2023-06-29T00:01:28Z
Vorlitix
3
Created page with "{{#invoke:Gallery|gallery}}<noinclude>{{Documentation}}</noinclude>"
wikitext
text/x-wiki
{{#invoke:Gallery|gallery}}<noinclude>{{Documentation}}</noinclude>
ac1b2ae340316660e59bfba33410727bfd0fad32
Module:Gallery
828
166
417
2023-06-29T00:02:24Z
Vorlitix
3
Created page with "-- This module implements {{gallery}} local p = {} local templatestyles = 'Module:Gallery/styles.css' local yesno = require('Module:Yesno') local function trim(s) return mw.ustring.gsub(mw.ustring.gsub(s, '%s', ' '), '^%s*(.-)%s*$', '%1') end local tracking, preview local function checkarg(k,v) if k and type(k) == 'string' then if k == 'align' or k == 'state' or k == 'style' or k == 'title' or k == 'width' or k == 'height' or k == 'lines' or k == 'whitebg' or..."
Scribunto
text/plain
-- This module implements {{gallery}}
local p = {}
local templatestyles = 'Module:Gallery/styles.css'
local yesno = require('Module:Yesno')
local function trim(s)
return mw.ustring.gsub(mw.ustring.gsub(s, '%s', ' '), '^%s*(.-)%s*$', '%1')
end
local tracking, preview
local function checkarg(k,v)
if k and type(k) == 'string' then
if k == 'align' or k == 'state' or k == 'style' or k == 'title' or
k == 'width' or k == 'height' or k == 'lines' or k == 'whitebg' or
k == 'mode' or k == 'footer' or k == 'perrow' or k == 'noborder' or
k:match('^alt%d+$') or k:match('^%d+$') then
-- valid
elseif k == 'captionstyle' then
if not v:match('^text%-align%s*:%s*center[;%s]*$') then
table.insert(tracking, '[[Category:Pages using gallery with the captionstyle parameter]]')
end
else
-- invalid
local vlen = mw.ustring.len(k)
k = mw.ustring.sub(k, 1, (vlen < 25) and vlen or 25)
k = mw.ustring.gsub(k, '[^%w\-_ ]', '?')
table.insert(tracking, '[[Category:Pages using gallery with unknown parameters|' .. k .. ']]')
table.insert(preview, '"' .. k .. '"')
end
end
end
function p.gallery(frame)
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
local origArgs = (type(frame.getParent) == 'function') and frame:getParent().args or frame
-- ParserFunctions considers the empty string to be false, so to preserve the previous
-- behavior of {{gallery}}, change any empty arguments to nil, so Lua will consider
-- them false too.
local args = {}
tracking, preview = {}, {}
for k, v in pairs(origArgs) do
if v ~= '' then
args[k] = v
checkarg(k,v)
end
end
if (args.mode or '') == 'packed' and (args.align or '') == '' then
args.align = 'center'
end
local tbl = mw.html.create('div')
tbl:addClass('mod-gallery')
if args.state then
tbl
:addClass('mod-gallery-collapsible')
:addClass('collapsible')
:addClass(args.state)
end
if args.style then
tbl:cssText(args.style)
else
tbl:addClass('mod-gallery-default')
end
if args.align then
tbl:addClass('mod-gallery-' .. args.align:lower())
end
if args.title then
tbl:tag('div')
:addClass('title')
:tag('div')
:wikitext(args.title)
end
local gargs = {}
gargs['class'] = 'nochecker' .. (args.noborder and '' or ' bordered-images')
gargs['widths'] = tonumber(args.width) or 180
gargs['heights'] = tonumber(args.height) or 180
gargs['style'] = args.captionstyle
gargs['perrow'] = args.perrow
gargs['mode'] = args.mode
if yesno(args.whitebg or 'yes') then
gargs['class'] = gargs['class'] .. ' whitebg'
end
local gallery = {}
local imageCount = math.ceil(#args / 2)
for i = 1, imageCount do
local img = trim(args[i*2 - 1] or '')
local caption = trim(args[i*2] or '')
local alt = trim(args['alt' .. i] or '')
if img ~= '' then
table.insert(gallery, img .. (alt ~= '' and ('|alt=' .. alt) or '') .. '|' .. caption )
end
end
tbl:tag('div')
:addClass('main')
:tag('div')
:wikitext(
frame:extensionTag{ name = 'gallery', content = '\n' .. table.concat(gallery,'\n'), args = gargs}
)
if args.footer then
tbl:tag('div')
:addClass('footer')
:tag('div')
:wikitext(args.footer)
end
local trackstr = (#tracking > 0) and table.concat(tracking, '') or ''
if #preview > 0 then
trackstr = require('Module:If preview')._warning({
'Unknown parameters ' .. table.concat(preview, '; ') .. '.'
}) .. trackstr
end
return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(tbl) .. trackstr
end
return p
c01c36536c14aae6ffec0d558b9fa68ffe118d01
Module:Gallery/doc
828
167
418
2023-06-29T00:02:43Z
Vorlitix
3
Created page with "{{Module rating|protected}} {{Lua|Module:Yesno}} {{high-use}} {{uses TemplateStyles|Module:Gallery/styles.css}} Implements {{tl|gallery}} == Tracking categories == * {{clc|Pages using gallery with the captionstyle parameter}} * {{clc|Pages using gallery with unknown parameters}}"
wikitext
text/x-wiki
{{Module rating|protected}}
{{Lua|Module:Yesno}}
{{high-use}}
{{uses TemplateStyles|Module:Gallery/styles.css}}
Implements {{tl|gallery}}
== Tracking categories ==
* {{clc|Pages using gallery with the captionstyle parameter}}
* {{clc|Pages using gallery with unknown parameters}}
ee021d4fc9edbcf343bc2e014aa75de7df089855
Module:Gallery/styles.css
828
168
419
2023-06-29T00:03:48Z
Vorlitix
3
Created page with "/* {{pp-template}} */ @media all and (max-width: 720px) { .mod-gallery { width: 100% !important; } } .mod-gallery { display: table; } .mod-gallery-default { background: transparent; margin-top: 0.3em; } .mod-gallery-center { margin-left: auto; margin-right: auto; } .mod-gallery-left { float: left; } .mod-gallery-right { float: right; } .mod-gallery-none { float: none; } .mod-gallery-collapsible { width: 100%; } .mod-gallery .title, .mod-gallery .main..."
sanitized-css
text/css
/* {{pp-template}} */
@media all and (max-width: 720px) {
.mod-gallery {
width: 100% !important;
}
}
.mod-gallery {
display: table;
}
.mod-gallery-default {
background: transparent;
margin-top: 0.3em;
}
.mod-gallery-center {
margin-left: auto;
margin-right: auto;
}
.mod-gallery-left {
float: left;
}
.mod-gallery-right {
float: right;
}
.mod-gallery-none {
float: none;
}
.mod-gallery-collapsible {
width: 100%;
}
.mod-gallery .title,
.mod-gallery .main,
.mod-gallery .footer {
display: table-row;
}
.mod-gallery .title > div {
display: table-cell;
padding: 0.2em 0 0.6em 1.6em;
text-align: center;
font-weight: bold;
}
.mod-gallery .main > div {
display: table-cell;
}
.mod-gallery .gallery {
line-height: 1.35em;
}
.mod-gallery .footer > div {
display: table-cell;
padding: 0.2em 0 0.6em 1.6em;
text-align: right;
font-size: 80%;
line-height: 1em;
}
.mod-gallery .title > div *,
.mod-gallery .footer > div * {
overflow: visible;
}
.mod-gallery .gallerybox img {
background: none !important;
}
.mod-gallery .bordered-images .thumb img {
border: solid #eaecf0 1px;
}
.mod-gallery .whitebg .thumb {
background: #fff !important;
}
4b6a0011f8da09725a063e4bf40d3349cafd6c02
Template:Gallery/doc
10
169
420
2023-06-29T00:04:18Z
Vorlitix
3
Created page with "{{Module rating|protected}} {{Lua|Module:Yesno}} {{high-use}} {{uses TemplateStyles|Module:Gallery/styles.css}} Implements {{tl|gallery}} == Tracking categories == * {{clc|Pages using gallery with the captionstyle parameter}} * {{clc|Pages using gallery with unknown parameters}}"
wikitext
text/x-wiki
{{Module rating|protected}}
{{Lua|Module:Yesno}}
{{high-use}}
{{uses TemplateStyles|Module:Gallery/styles.css}}
Implements {{tl|gallery}}
== Tracking categories ==
* {{clc|Pages using gallery with the captionstyle parameter}}
* {{clc|Pages using gallery with unknown parameters}}
ee021d4fc9edbcf343bc2e014aa75de7df089855
Template:Module rating
10
170
421
2023-06-29T00:04:49Z
Vorlitix
3
Created page with "<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox | type = notice | image = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]] | alpha | a = File:Alpha lowerca..."
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox
| type = notice
| image = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]]
| alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]]
| beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]]
| release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]]
| protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]]
| semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]]
}}
| style =
| textstyle =
| text = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }}
}}
| alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }}
}}
| beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }}
}}
| release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }}
}}
| protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| #default = {{error|Module rating is invalid or not specified.}}
}}
}}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}}}</includeonly><noinclude>
{{module rating|release|nocat=true|demospace=module}}
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
bbd244b3ea2e13ec4c1c810ae44f2f3789a93efc
Template:Lua
10
171
422
2023-06-29T00:05:10Z
Vorlitix
3
Created page with "<includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude> {{Lua|Module:Lua banner}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude>
{{Lua|Module:Lua banner}}
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7
Template:Lua banner
10
172
423
2023-06-29T00:05:40Z
Vorlitix
3
Created page with "-- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args)..."
wikitext
text/x-wiki
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local p = {}
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
title = title.basePageTitle
end
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
else
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category
if not category then
local categories = {
['Module:String'] = 'Templates based on the String Lua module',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module'
}
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
end
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
end
if not args.noprotcat and protCatName then
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt
if titleObj.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = titleObj.protectionLevels["edit"][1]
end
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
if module ~= "WP:libraryUtil" then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = protCatName
break
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
03ec1b34a40121efc562c0c64a67ebbf57d56dff
Module:Lua banner
828
173
424
2023-06-29T00:06:19Z
Vorlitix
3
Created page with "-- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args)..."
Scribunto
text/plain
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local p = {}
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
title = title.basePageTitle
end
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
else
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category
if not category then
local categories = {
['Module:String'] = 'Templates based on the String Lua module',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module'
}
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
end
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
end
if not args.noprotcat and protCatName then
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt
if titleObj.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = titleObj.protectionLevels["edit"][1]
end
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
if module ~= "WP:libraryUtil" then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = protCatName
break
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
03ec1b34a40121efc562c0c64a67ebbf57d56dff
Module:List
828
174
425
2023-06-29T00:07:06Z
Vorlitix
3
Created page with "local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools') local p = {} local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true } function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {} -- Classes and TemplateStyles data.classes = {} data.templatestyles = ''..."
Scribunto
text/plain
local libUtil = require('libraryUtil')
local checkType = libUtil.checkType
local mTableTools = require('Module:TableTools')
local p = {}
local listTypes = {
['bulleted'] = true,
['unbulleted'] = true,
['horizontal'] = true,
['ordered'] = true,
['horizontal_ordered'] = true
}
function p.makeListData(listType, args)
-- Constructs a data table to be passed to p.renderList.
local data = {}
-- Classes and TemplateStyles
data.classes = {}
data.templatestyles = ''
if listType == 'horizontal' or listType == 'horizontal_ordered' then
table.insert(data.classes, 'hlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Hlist/styles.css' }
}
elseif listType == 'unbulleted' then
table.insert(data.classes, 'plainlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Plainlist/styles.css' }
}
end
table.insert(data.classes, args.class)
-- Main div style
data.style = args.style
-- Indent for horizontal lists
if listType == 'horizontal' or listType == 'horizontal_ordered' then
local indent = tonumber(args.indent)
indent = indent and indent * 1.6 or 0
if indent > 0 then
data.marginLeft = indent .. 'em'
end
end
-- List style types for ordered lists
-- This could be "1, 2, 3", "a, b, c", or a number of others. The list style
-- type is either set by the "type" attribute or the "list-style-type" CSS
-- property.
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listStyleType = args.list_style_type or args['list-style-type']
data.type = args['type']
-- Detect invalid type attributes and attempt to convert them to
-- list-style-type CSS properties.
if data.type
and not data.listStyleType
and not tostring(data.type):find('^%s*[1AaIi]%s*$')
then
data.listStyleType = data.type
data.type = nil
end
end
-- List tag type
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listTag = 'ol'
else
data.listTag = 'ul'
end
-- Start number for ordered lists
data.start = args.start
if listType == 'horizontal_ordered' then
-- Apply fix to get start numbers working with horizontal ordered lists.
local startNum = tonumber(data.start)
if startNum then
data.counterReset = 'listitem ' .. tostring(startNum - 1)
end
end
-- List style
-- ul_style and ol_style are included for backwards compatibility. No
-- distinction is made for ordered or unordered lists.
data.listStyle = args.list_style
-- List items
-- li_style is included for backwards compatibility. item_style was included
-- to be easier to understand for non-coders.
data.itemStyle = args.item_style or args.li_style
data.items = {}
for _, num in ipairs(mTableTools.numKeys(args)) do
local item = {}
item.content = args[num]
item.style = args['item' .. tostring(num) .. '_style']
or args['item_style' .. tostring(num)]
item.value = args['item' .. tostring(num) .. '_value']
or args['item_value' .. tostring(num)]
table.insert(data.items, item)
end
return data
end
function p.renderList(data)
-- Renders the list HTML.
-- Return the blank string if there are no list items.
if type(data.items) ~= 'table' or #data.items < 1 then
return ''
end
-- Render the main div tag.
local root = mw.html.create('div')
for _, class in ipairs(data.classes or {}) do
root:addClass(class)
end
root:css{['margin-left'] = data.marginLeft}
if data.style then
root:cssText(data.style)
end
-- Render the list tag.
local list = root:tag(data.listTag or 'ul')
list
:attr{start = data.start, type = data.type}
:css{
['counter-reset'] = data.counterReset,
['list-style-type'] = data.listStyleType
}
if data.listStyle then
list:cssText(data.listStyle)
end
-- Render the list items
for _, t in ipairs(data.items or {}) do
local item = list:tag('li')
if data.itemStyle then
item:cssText(data.itemStyle)
end
if t.style then
item:cssText(t.style)
end
item
:attr{value = t.value}
:wikitext(t.content)
end
return data.templatestyles .. tostring(root)
end
function p.renderTrackingCategories(args)
local isDeprecated = false -- Tracks deprecated parameters.
for k, v in pairs(args) do
k = tostring(k)
if k:find('^item_style%d+$') or k:find('^item_value%d+$') then
isDeprecated = true
break
end
end
local ret = ''
if isDeprecated then
ret = ret .. '[[Category:List templates with deprecated parameters]]'
end
return ret
end
function p.makeList(listType, args)
if not listType or not listTypes[listType] then
error(string.format(
"bad argument #1 to 'makeList' ('%s' is not a valid list type)",
tostring(listType)
), 2)
end
checkType('makeList', 2, args, 'table')
local data = p.makeListData(listType, args)
local list = p.renderList(data)
local trackingCategories = p.renderTrackingCategories(args)
return list .. trackingCategories
end
for listType in pairs(listTypes) do
p[listType] = function (frame)
local mArguments = require('Module:Arguments')
local origArgs = mArguments.getArgs(frame, {
valueFunc = function (key, value)
if not value or not mw.ustring.find(value, '%S') then return nil end
if mw.ustring.find(value, '^%s*[%*#;:]') then
return value
else
return value:match('^%s*(.-)%s*$')
end
return nil
end
})
-- Copy all the arguments to a new table, for faster indexing.
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.makeList(listType, args)
end
end
return p
7a4f36a6e9cd56370bdd8207d23694124821dc1a
Module:List/doc
828
175
426
2023-06-29T00:07:29Z
Vorlitix
3
Created page with "{{used in system|in [[MediaWiki:Citethispage-content]]}} {{module rating|protected}} {{Lua|Module:TableTools|Module:Arguments}} {{Uses TemplateStyles|Template:Plainlist/styles.css|Template:Hlist/styles.css}} This module outputs various kinds of lists. At present, it supports bulleted lists, unbulleted lists, horizontal lists, ordered lists (numbered or alphabetical), and horizontal ordered lists. It allows for easy css styling of the list or of the individual list items..."
wikitext
text/x-wiki
{{used in system|in [[MediaWiki:Citethispage-content]]}}
{{module rating|protected}}
{{Lua|Module:TableTools|Module:Arguments}}
{{Uses TemplateStyles|Template:Plainlist/styles.css|Template:Hlist/styles.css}}
This module outputs various kinds of lists. At present, it supports bulleted lists, unbulleted lists, horizontal lists, ordered lists (numbered or alphabetical), and horizontal ordered lists. It allows for easy css styling of the list or of the individual list items.
== Usage ==
=== Quick usage ===
{{pre|<nowiki>{{</nowiki>#invoke:list<nowiki>|</nowiki>''function''<nowiki>|</nowiki>''first item''<nowiki>|</nowiki>''second item''<nowiki>|</nowiki>''third item''<nowiki>|</nowiki>...<nowiki>}}</nowiki>}}
=== All parameters ===
{{pre|
<nowiki>{{</nowiki>#invoke:list<nowiki>|</nowiki>''function''
<nowiki>|</nowiki>''first item''<nowiki>|</nowiki>''second item''<nowiki>|</nowiki>''third item''<nowiki>|</nowiki>...
<nowiki>|start = </nowiki>''start number for ordered lists''
<nowiki>|type = </nowiki>''type of numbering for ordered lists''
<nowiki>|list_style_type = </nowiki>''type of marker for ordered lists (uses CSS)''
<nowiki>|class = </nowiki>''class''
<nowiki>|style = </nowiki>''style''
<nowiki>|list_style = </nowiki>''style for the list''
<nowiki>|item_style = </nowiki>''style for all list items''
<nowiki>|item1_style = </nowiki>''style for the first list item''<nowiki> |item2_style = </nowiki>''style for the second list item''<nowiki> |</nowiki>...
<nowiki>|item1_value = </nowiki>''value for the first list item''<nowiki> |item2_value = </nowiki>''value for the second list item''<nowiki> |</nowiki>...
<nowiki>|indent = </nowiki>''indent for horizontal lists''
<nowiki>}}</nowiki>
}}
=== Arguments passed from parent template ===
{{pre|<nowiki>{{</nowiki>#invoke:list<nowiki>|</nowiki>''function''<nowiki>}}</nowiki>}}
=== Functions ===
{| class="wikitable"
|-
! Function name
! Produces
! Example output
! Template using the function
|-
| <code>bulleted</code>
| Bulleted lists
| {{#invoke:list|bulleted|First item|Second item|Third item}}
| {{tlx|bulleted list}}
|-
| <code>unbulleted</code>
| Unbulleted lists
| {{#invoke:list|unbulleted|First item|Second item|Third item}}
| {{tlx|unbulleted list}}
|-
| <code>horizontal</code>
| Horizontal bulleted lists
| {{#invoke:list|horizontal|First item|Second item|Third item}}
| {{tlx|hlist}}
|-
| <code>ordered</code>
| Ordered lists (numbered lists and alphabetical lists)
| {{#invoke:list|ordered|First item|Second item|Third item}}
| {{tlx|ordered list}}
|-
| <code>horizontal_ordered</code>
| Horizontal ordered lists
| {{#invoke:list|horizontal_ordered|First item|Second item|Third item}}
| {{tlx|horizontal ordered list}}
|}
== Parameters ==
* Positional parameters (<code>1</code>, <code>2</code>, <code>3</code>...) - these are the list items. If no list items are present, the module will output nothing.
* <code>start</code> - sets the start item for ordered lists. This can be a start number for numbered lists, or a start letter for alphabetical lists. Horizontal ordered lists only support numbers.
* <code>type</code> - the type of marker used in ordered lists. Possible values are "1" for numbers (the default), "A" for uppercase letters, "a" for lowercase letters, "I" for uppercase [[Roman numerals]], and "i" for lowercase Roman numerals. Not supported in horizontal ordered lists. See also the <code>list_style_type</code> parameter.
* <code>list_style_type</code> - the type of marker used in ordered lists. This uses CSS styling, and has more types available than the <code>type</code> parameter, which uses an [[html attribute]]. Possible values are listed at [https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type MDN's list-style-type page]. Support may vary by browser. <code>list-style-type</code> is an alias for this parameter.
* <code>class</code> - a custom class for the {{tag|div}} tags surrounding the list, e.g. <code>plainlinks</code>.
* <code>style</code> - a custom css style for the {{tag|div}} tags surrounding the list, e.g. <code>font-size: 90%;</code>.
* <code>list_style</code> - a custom css style for the list itself. The format is the same as for the {{para|style}} parameter.
* <code>item_style</code> - a custom css style for all of the list items (the {{tag|li}} tags). The format is the same as for the {{para|style}} parameter.
* <code>item1_style</code>, <code>item2_style</code>, <code>item3_style</code>... - custom css styles for each of the list items. The format is the same as for the {{para|style}} parameter.
* <code>item1_value</code>, <code>item2_value</code>, <code>item3_value</code>... - custom value for the given list item. List items following the one given will increment from the specified value. The value should be a positive integer. (Note that this option only has an effect on ordered lists.)
* <code>indent</code> - this parameter indents the list, for horizontal and horizontal ordered lists only. The value must be a number, e.g. <code>2</code>. The indent is calculated in [[Em (typography)|em]], and is 1.6 times the value specified. If no indent is specified, the default is zero.
== Examples ==
=== Bulleted lists ===
{| class="wikitable"
! Code !! Result
|-
| <code><nowiki>{{#invoke:list|bulleted|First item|Second item|Third item}}</nowiki></code>
| {{#invoke:list|bulleted|First item|Second item|Third item}}
|-
| <code><nowiki>{{#invoke:list|bulleted|First item|Second item|Third item|item_style=color:blue;}}</nowiki></code>
| {{#invoke:list|bulleted|First item|Second item|Third item|item_style=color:blue;}}
|-
| <code><nowiki>{{#invoke:list|bulleted|First item|Second item|Third item|item1_style=background-color:yellow;|item2_style=background-color:silver;}}</nowiki></code>
| {{#invoke:list|bulleted|First item|Second item|Third item|item1_style=background-color:yellow;|item2_style=background-color:silver;}}
|}
=== Unbulleted lists ===
{| class="wikitable"
! Code !! Result
|-
| <code><nowiki>{{#invoke:list|unbulleted|First item|Second item|Third item}}</nowiki></code>
| {{#invoke:list|unbulleted|First item|Second item|Third item}}
|-
| <code><nowiki>{{#invoke:list|unbulleted|First item|Second item|Third item|item_style=color:blue;}}</nowiki></code>
| {{#invoke:list|unbulleted|First item|Second item|Third item|item_style=color:blue;}}
|-
| <code><nowiki>{{#invoke:list|unbulleted|First item|Second item|Third item|item1_style=background-color:yellow;|item2_style=background-color:silver;}}</nowiki></code>
| {{#invoke:list|unbulleted|First item|Second item|Third item|item1_style=background-color:yellow;|item2_style=background-color:silver;}}
|}
=== Horizontal lists ===
{| class="wikitable"
! Code !! Result
|-
| <code><nowiki>{{#invoke:list|horizontal|First item|Second item|Third item}}</nowiki></code>
| {{#invoke:list|horizontal|First item|Second item|Third item}}
|-
| <code><nowiki>{{#invoke:list|horizontal|First item|Second item|Third item|indent=2}}</nowiki></code>
| {{#invoke:list|horizontal|First item|Second item|Third item|indent=2}}
|}
=== Ordered lists ===
{| class="wikitable"
! Code !! Result
|-
| <code><nowiki>{{#invoke:list|ordered|First item|Second item|Third item}}</nowiki></code>
| {{#invoke:list|ordered|First item|Second item|Third item}}
|-
| <code><nowiki>{{#invoke:list|ordered|First item|Second item|Third item|start=3}}</nowiki></code>
| {{#invoke:list|ordered|First item|Second item|Third item|start=3}}
|-
| Lowercase [[Roman numerals]]: <code><nowiki>{{#invoke:list|ordered|First item|Second item|Third item|type=i}}</nowiki></code>
| {{#invoke:list|ordered|First item|Second item|Third item|type=i}}
|-
| Lowercase [[Greek alphabet]]: <code><nowiki>{{#invoke:list|ordered|First item|Second item|Third item|list_style_type=lower-greek}}</nowiki></code>
| {{#invoke:list|ordered|First item|Second item|Third item|list_style_type=lower-greek}}
|}
=== Horizontal ordered lists ===
{| class="wikitable"
! Code !! Result
|-
| <code><nowiki>{{#invoke:list|horizontal_ordered|First item|Second item|Third item}}</nowiki></code>
| {{#invoke:list|horizontal_ordered|First item|Second item|Third item}}
|-
| <code><nowiki>{{#invoke:list|horizontal_ordered|First item|Second item|Third item|start=3}}</nowiki></code>
| {{#invoke:list|horizontal_ordered|First item|Second item|Third item|start=3}}
|-
| <code><nowiki>{{#invoke:list|horizontal_ordered|First item|Second item|Third item|indent=2}}</nowiki></code>
| {{#invoke:list|horizontal_ordered|First item|Second item|Third item|indent=2}}
|}
== Tracking/maintenance category ==
* {{clc|List templates with deprecated parameters}}
== See also ==
* [[Module:Separated entries]]
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Modules that add a tracking category]]
}}</includeonly>
b4031c1ae9765885d3ce8d96c78c8557f6887aa1
Module:Tabletools/doc
828
177
428
2023-06-29T00:08:35Z
Vorlitix
3
Created page with "{{used in system}} {{module rating|protected}} {{lua|Module:Exponential search|noprotcat=yes}} This module includes a number of functions for dealing with Lua tables. It is a meta-module, meant to be called from other Lua modules, and should not be called directly from #invoke. == Loading the module == To use any of the functions, first you must load the module. <syntaxhighlight lang="lua"> local TableTools = require('Module:TableTools') </syntaxhighlight> == isPosit..."
wikitext
text/x-wiki
{{used in system}}
{{module rating|protected}}
{{lua|Module:Exponential search|noprotcat=yes}}
This module includes a number of functions for dealing with Lua tables. It is a meta-module, meant to be called from other Lua modules, and should not be called directly from #invoke.
== Loading the module ==
To use any of the functions, first you must load the module.
<syntaxhighlight lang="lua">
local TableTools = require('Module:TableTools')
</syntaxhighlight>
== isPositiveInteger ==
<syntaxhighlight lang="lua">
TableTools.isPositiveInteger(value)
</syntaxhighlight>
Returns <code>true</code> if <code>''value''</code> is a positive integer, and <code>false</code> if not. Although it doesn't operate on tables, it is included here as it is useful for determining whether a given table key is in the array part or the hash part of a table.
== isNan ==
<syntaxhighlight lang="lua">
TableTools.isNan(value)
</syntaxhighlight>
Returns <code>true</code> if <code>''value''</code> is a [[NaN]] value, and <code>false</code> if not. Although it doesn't operate on tables, it is included here as it is useful for determining whether a value can be a valid table key. (Lua will generate an error if a NaN value is used as a table key.)
== shallowClone ==
<syntaxhighlight lang="lua">
TableTools.shallowClone(t)
</syntaxhighlight>
Returns a clone of a table. The value returned is a new table, but all subtables and functions are shared. Metamethods are respected, but the returned table will have no metatable of its own. If you want to make a new table with no shared subtables and with metatables transferred, you can use <code>[[mw:Extension:Scribunto/Lua reference manual#mw.clone|mw.clone]]</code> instead. If you want to make a new table with no shared subtables and without metatables transferred, use <code>[[#deepCopy|deepCopy]]</code> with the <code>noMetatable</code> option.
== removeDuplicates ==
<syntaxhighlight lang="lua">
TableTools.removeDuplicates(t)
</syntaxhighlight>
Removes duplicate values from an array. This function is only designed to work with standard arrays: keys that are not positive integers are ignored, as are all values after the first <code>nil</code> value. (For arrays containing <code>nil</code> values, you can use <code>[[#compressSparseArray|compressSparseArray]]</code> first.) The function tries to preserve the order of the array: the earliest non-unique value is kept, and all subsequent duplicate values are removed. For example, for the table {{code|code={5, 4, 4, 3, 4, 2, 2, 1}|lang=lua}} <code>removeDuplicates</code> will return {{code|code={5, 4, 3, 2, 1}|lang=lua}}.
== numKeys ==
<syntaxhighlight lang="lua">
TableTools.numKeys(t)
</syntaxhighlight>
Takes a table <code>''t''</code> and returns an array containing the numbers of any positive integer keys that have non-nil values, sorted in numerical order. For example, for the table {{code|code={'foo', nil, 'bar', 'baz', a = 'b'}|lang=lua}}, <code>numKeys</code> will return {{code|code={1, 3, 4}|lang=lua}}.
== affixNums ==
<syntaxhighlight lang="lua">
TableTools.affixNums(t, prefix, suffix)
</syntaxhighlight>
Takes a table <code>''t''</code> and returns an array containing the numbers of keys with the optional prefix <code>''prefix''</code> and the optional suffix <code>''suffix''</code>. For example, for the table {{code|code={a1 = 'foo', a3 = 'bar', a6 = 'baz'}|lang=lua}} and the prefix <code>'a'</code>, <code>affixNums</code> will return {{code|code={1, 3, 6}|lang=lua}}. All characters in <code>''prefix''</code> and <code>''suffix''</code> are interpreted literally.
== numData ==
<syntaxhighlight lang="lua">
TableTools.numData(t, compress)
</syntaxhighlight>
Given a table with keys like <code>"foo1"</code>, <code>"bar1"</code>, <code>"foo2"</code>, and <code>"baz2"</code>, returns a table of subtables in the format {{code|code={ [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} }|lang=lua}}. Keys that don't end with an integer are stored in a subtable named <code>"other"</code>. The compress option compresses the table so that it can be iterated over with <code>ipairs</code>.
== compressSparseArray ==
<syntaxhighlight lang="lua">
TableTools.compressSparseArray(t)
</syntaxhighlight>
Takes an array <code>''t''</code> with one or more nil values, and removes the nil values while preserving the order, so that the array can be safely traversed with <code>ipairs</code>. Any keys that are not positive integers are removed. For example, for the table {{code|code={1, nil, foo = 'bar', 3, 2}|lang=lua}}, <code>compressSparseArray</code> will return {{code|code={1, 3, 2}|lang=lua}}.
== sparseIpairs ==
<syntaxhighlight lang="lua">
TableTools.sparseIpairs(t)
</syntaxhighlight>
This is an iterator function for traversing a sparse array <code>''t''</code>. It is similar to <code>[[mw:Extension:Scribunto/Lua reference manual#ipairs|ipairs]]</code>, but will continue to iterate until the highest numerical key, whereas <code>ipairs</code> may stop after the first <code>nil</code> value. Any keys that are not positive integers are ignored.
Usually <code>sparseIpairs</code> is used in a generic <code>for</code> loop.
<syntaxhighlight lang="lua">
for i, v in TableTools.sparseIpairs(t) do
-- code block
end
</syntaxhighlight>
Note that <code>sparseIpairs</code> uses the <code>[[mw:Extension:Scribunto/Lua reference manual#pairs|pairs]]</code> function in its implementation. Although some table keys appear to be ignored, all table keys are accessed when it is run.
== size ==
<syntaxhighlight lang="lua">
TableTools.size(t)
</syntaxhighlight>
Finds the size of a key/value pair table. For example, for the table {{code|code={foo = 'foo', bar = 'bar'}|lang=lua}}, <code>size</code> will return <code>2</code>. The function will also work on arrays, but for arrays it is more efficient to use the <code>#</code> operator. Note that to find the table size, this function uses the <code>[[mw:Extension:Scribunto/Lua reference manual#pairs|pairs]]</code> function to iterate through all of the table keys.
== keysToList ==
<syntaxhighlight lang="lua">
TableTools.keysToList(t, keySort, checked)
</syntaxhighlight>
Returns a list of the keys in a table, sorted using either a default comparison function or a custom <code>''keySort''</code> function, which follows the same rules as the <code>comp</code> function supplied to <code>[[mw:Extension:Scribunto/Lua reference manual#table.sort|table.sort]]</code>. If <code>''keySort''</code> is <code>false</code>, no sorting is done. Set <code>''checked''</code> to <code>true</code> to skip the internal type checking.
== sortedPairs ==
<syntaxhighlight lang="lua">
TableTools.sortedPairs(t, keySort)
</syntaxhighlight>
Iterates through a table, with the keys sorted using the <code>keysToList</code> function. If there are only numerical keys, <code>sparseIpairs</code> is probably more efficient.
== isArray ==
<syntaxhighlight lang="lua">
TableTools.isArray(value)
</syntaxhighlight>
Returns <code>true</code> if <code>''value''</code> is a table and all keys are consecutive integers starting at 1.
== isArrayLike ==
<syntaxhighlight lang="lua">
TableTools.isArrayLike(value)
</syntaxhighlight>
Returns <code>true</code> if <code>''value''</code> is iterable and all keys are consecutive integers starting at 1.
== invert ==
<syntaxhighlight lang="lua">
TableTools.invert(arr)
</syntaxhighlight>
Transposes the keys and values in an array. For example, {{code|invert{ "a", "b", "c" }|lua}} yields {{code|code={ a=1, b=2, c=3 }|lang=lua}}.
== listToSet ==
<syntaxhighlight lang="lua">
TableTools.listToSet(arr)
</syntaxhighlight>
Creates a set from the array part of the table <code>''arr''</code>. Indexing the set by any of the values of the array returns <code>true</code>. For example, {{code|listToSet{ "a", "b", "c" }|lua}} yields {{code|code={ a=true, b=true, c=true }|lang=lua}}. See also [[Module:Lua set]] for more advanced ways to create a set.
== deepCopy ==
<syntaxhighlight lang="lua">
TableTools.deepCopy(orig, noMetatable, alreadySeen)
</syntaxhighlight>
Creates a copy of the table <code>''orig''</code>. As with <code>mw.clone</code>, all values that are not functions are duplicated and the identity of tables is preserved. If <code>''noMetatable''</code> is <code>true</code>, then the metatable (if any) is not copied. Can copy tables loaded with <code>mw.loadData</code>.
Similar to <code>mw.clone</code>, but <code>mw.clone</code> cannot copy tables loaded with <code>mw.loadData</code> and does not allow metatables <em>not</em> to be copied.
== sparseConcat ==
<syntaxhighlight lang="lua">
TableTools.sparseConcat(t, sep, i, j)
</syntaxhighlight>
Concatenates all values in the table that are indexed by a positive integer, in order. For example, {{code|sparseConcat{ "a", nil, "c", "d" }|lua}} yields {{code|"acd"|lua}} and {{code|sparseConcat{ nil, "b", "c", "d" }|lua}} yields {{code|"bcd"|lua}}.
== length ==
<syntaxhighlight lang="lua">
TableTools.length(t, prefix)
</syntaxhighlight>
Finds the length of an array or of a quasi-array with keys with an optional <code>''prefix''</code> such as "data1", "data2", etc. It uses an [[exponential search]] algorithm to find the length, so as to use as few table lookups as possible.
This algorithm is useful for arrays that use metatables (e.g. [[mw:Extension:Scribunto/Lua reference manual#frame.args|frame.args]]) and for quasi-arrays. For normal arrays, just use the [[mw:Extension:Scribunto/Lua reference manual#Length operator|# operator]], as it is implemented in [[C (programming language)|C]] and will be quicker.
== inArray ==
<syntaxhighlight lang="lua">
TableTools.inArray(arr, valueToFind)
</syntaxhighlight>
Returns <code>true</code> if <code>''valueToFind''</code> is a member of the array <code>''arr''</code>, and <code>false</code> otherwise.
<includeonly>{{Sandbox other||
[[Category:Lua metamodules|TableTools]]
}}</includeonly>
6fcbbdc2d7277a80556bd4c7daaf380903d3d831
Template:Used in system
10
178
429
2023-06-29T00:10:31Z
Vorlitix
3
Created page with "{{#invoke:High-use|main|1=|2={{{2|}}}|system={{#if:{{{1|}}}|{{{1}}}|in system messages}}<noinclude>|nocat=true</noinclude>}}<noinclude> {{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude>"
wikitext
text/x-wiki
{{#invoke:High-use|main|1=|2={{{2|}}}|system={{#if:{{{1|}}}|{{{1}}}|in system messages}}<noinclude>|nocat=true</noinclude>}}<noinclude>
{{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
0abe278369db6cbbe319e7452d7644e27e11c532
Module:Transclusion count
828
181
432
2023-06-29T00:12:38Z
Vorlitix
3
Created page with "local p = {} function p.fetch(frame) local template = nil local return_value = nil -- Use demo parameter if it exists, otherswise use current template name local namespace = mw.title.getCurrentTitle().namespace if frame.args["demo"] and frame.args["demo"] ~= "" then template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","") elseif namespace == 10 then -- Template namespace template = mw.title.getCurrentTitle().text elseif namespace == 828 then -- Modu..."
Scribunto
text/plain
local p = {}
function p.fetch(frame)
local template = nil
local return_value = nil
-- Use demo parameter if it exists, otherswise use current template name
local namespace = mw.title.getCurrentTitle().namespace
if frame.args["demo"] and frame.args["demo"] ~= "" then
template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","")
elseif namespace == 10 then -- Template namespace
template = mw.title.getCurrentTitle().text
elseif namespace == 828 then -- Module namespace
template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text)
end
-- If in template or module namespace, look up count in /data
if template ~= nil then
namespace = mw.title.new(template, "Template").namespace
if namespace == 10 or namespace == 828 then
template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end
template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end
local index = mw.ustring.sub(mw.title.new(template).text,1,1)
local status, data = pcall(function ()
return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other")))
end)
if status then
return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])
end
end
end
-- If database value doesn't exist, use value passed to template
if return_value == nil and frame.args[1] ~= nil then
local arg1=mw.ustring.match(frame.args[1], '[%d,]+')
if arg1 and arg1 ~= '' then
return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))
end
end
return return_value
end
-- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]]
function p.tabulate(frame)
local list = {}
for i = 65, 91 do
local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i)))
for name, count in pairs(data) do
table.insert(list, {mw.title.new(name, "Template").fullText, count})
end
end
table.sort(list, function(a, b)
return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2])
end)
local lang = mw.getContentLanguage();
for i = 1, #list do
list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2]))
end
return table.concat(list)
end
return p
000ef6bcbf7b66e727870b0c300c4009da300513
Module:High-use
828
182
433
2023-06-29T00:13:16Z
Vorlitix
3
Created page with "local p = {} -- _fetch looks at the "demo" argument. local _fetch = require('Module:Transclusion_count').fetch local yesno = require('Module:Yesno') function p.num(frame, count) if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end -- Build output string local return_value = "" if count == nil then if frame.args[1] == "risk" then..."
Scribunto
text/plain
local p = {}
-- _fetch looks at the "demo" argument.
local _fetch = require('Module:Transclusion_count').fetch
local yesno = require('Module:Yesno')
function p.num(frame, count)
if count == nil then
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
-- Build output string
local return_value = ""
if count == nil then
if frame.args[1] == "risk" then
return_value = "a very large number of"
else
return_value = "many"
end
else
-- Use 2 significant figures for smaller numbers and 3 for larger ones
local sigfig = 2
if count >= 100000 then
sigfig = 3
end
-- Prepare to round to appropriate number of sigfigs
local f = math.floor(math.log10(count)) - sigfig + 1
-- Round and insert "approximately" or "+" when appropriate
if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then
-- Round down
return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) )
else
-- Round to nearest
return_value = string.format("approximately %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
end
-- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes
if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then
local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5)
if percent >= 1 then
return_value = string.format("%s pages, or roughly %s%% of all", return_value, percent)
end
end
end
return return_value
end
-- Actions if there is a large (greater than or equal to 100,000) transclusion count
function p.risk(frame)
local return_value = ""
if frame.args[1] == "risk" then
return_value = "risk"
else
local count = _fetch(frame)
if count and count >= 100000 then return_value = "risk" end
end
return return_value
end
function p.text(frame, count)
-- Only show the information about how this template gets updated if someone
-- is actually editing the page and maybe trying to update the count.
local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or ''
if count == nil then
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" or title.subpageText == "sandbox" then
title = title.basePageTitle
end
local systemMessages = frame.args['system']
if frame.args['system'] == '' then
systemMessages = nil
end
-- This retrieves the project URL automatically to simplify localiation.
local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format(
mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'),
mw.uri.encode(title.fullText), p.num(frame, count))
local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used ';
if systemMessages then
used_on_text = used_on_text .. systemMessages ..
((count and count > 2000) and ("''', and " .. templateCount) or ("'''"))
else
used_on_text = used_on_text .. templateCount .. "'''"
end
local sandbox_text = ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format(
(mw.title.getCurrentTitle().namespace == 828 and "module" or "template"),
title.fullText, title.fullText,
mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage"
)
local infoArg = frame.args["info"] ~= "" and frame.args["info"]
if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then
local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.'
if infoArg then
info = info .. "<br />" .. infoArg
end
sandbox_text = info .. '<br /> To avoid major disruption' ..
(count and count >= 100000 and ' and server load' or '') ..
', any changes should be tested in the ' .. sandbox_text ..
'The tested changes can be added to this page in a single edit. '
else
sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') ..
'hanges may be widely noticed. Test changes in the ' .. sandbox_text
end
local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes '
if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then
discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"])
else
discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText )
end
return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text
end
function p.main(frame)
local count = nil
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]"
local type_param = "style"
local epilogue = ''
if frame.args['system'] and frame.args['system'] ~= '' then
image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]"
type_param = "content"
local nocat = frame:getParent().args['nocat'] or frame.args['nocat']
local categorise = (nocat == '' or not yesno(nocat))
if categorise then
epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[Category:Pages used in system messages needing protection]]}}}}')
end
elseif (frame.args[1] == "risk" or (count and count >= 100000)) then
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]"
type_param = "content"
end
if frame.args["form"] == "editnotice" then
return frame:expandTemplate{
title = 'editnotice',
args = {
["image"] = image,
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
}
} .. epilogue
else
return require('Module:Message box').main('ombox', {
type = type_param,
image = image,
text = p.text(frame, count),
expiry = (frame.args["expiry"] or "")
}) .. epilogue
end
end
return p
134551888e066954a89c109d2faa8af71a4454a4
Module:TableTools
828
183
434
2023-06-29T00:14:43Z
Vorlitix
3
Created page with "------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should not -- -- be called directly from #invoke...."
Scribunto
text/plain
------------------------------------------------------------------------------------
-- TableTools --
-- --
-- This module includes a number of functions for dealing with Lua tables. --
-- It is a meta-module, meant to be called from other Lua modules, and should not --
-- be called directly from #invoke. --
------------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local p = {}
-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
function p.isPositiveInteger(v)
return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity
end
------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false if
-- not. Although it doesn't operate on tables, it is included here as it is useful
-- for determining whether a value can be a valid table key. Lua will generate an
-- error if a NaN is used as a table key.
------------------------------------------------------------------------------------
function p.isNan(v)
return type(v) == 'number' and v ~= v
end
------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
function p.shallowClone(t)
checkType('shallowClone', 1, t, 'table')
local ret = {}
for k, v in pairs(t) do
ret[k] = v
end
return ret
end
------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
function p.removeDuplicates(arr)
checkType('removeDuplicates', 1, arr, 'table')
local isNan = p.isNan
local ret, exists = {}, {}
for _, v in ipairs(arr) do
if isNan(v) then
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
ret[#ret + 1] = v
else
if not exists[v] then
ret[#ret + 1] = v
exists[v] = true
end
end
end
return ret
end
------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
function p.numKeys(t)
checkType('numKeys', 1, t, 'table')
local isPositiveInteger = p.isPositiveInteger
local nums = {}
for k in pairs(t) do
if isPositiveInteger(k) then
nums[#nums + 1] = k
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return
-- {1, 3, 6}.
------------------------------------------------------------------------------------
function p.affixNums(t, prefix, suffix)
checkType('affixNums', 1, t, 'table')
checkType('affixNums', 2, prefix, 'string', true)
checkType('affixNums', 3, suffix, 'string', true)
local function cleanPattern(s)
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
end
prefix = prefix or ''
suffix = suffix or ''
prefix = cleanPattern(prefix)
suffix = cleanPattern(suffix)
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
local nums = {}
for k in pairs(t) do
if type(k) == 'string' then
local num = mw.ustring.match(k, pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table
-- of subtables in the format
-- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}.
-- Keys that don't end with an integer are stored in a subtable named "other". The
-- compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
function p.numData(t, compress)
checkType('numData', 1, t, 'table')
checkType('numData', 2, compress, 'boolean', true)
local ret = {}
for k, v in pairs(t) do
local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
if num then
num = tonumber(num)
local subtable = ret[num] or {}
if prefix == '' then
-- Positional parameters match the blank string; put them at the start of the subtable instead.
prefix = 1
end
subtable[prefix] = v
ret[num] = subtable
else
local subtable = ret.other or {}
subtable[k] = v
ret.other = subtable
end
end
if compress then
local other = ret.other
ret = p.compressSparseArray(ret)
ret.other = other
end
return ret
end
------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
function p.compressSparseArray(t)
checkType('compressSparseArray', 1, t, 'table')
local ret = {}
local nums = p.numKeys(t)
for _, num in ipairs(nums) do
ret[#ret + 1] = t[num]
end
return ret
end
------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
function p.sparseIpairs(t)
checkType('sparseIpairs', 1, t, 'table')
local nums = p.numKeys(t)
local i = 0
local lim = #nums
return function ()
i = i + 1
if i <= lim then
local key = nums[i]
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
function p.size(t)
checkType('size', 1, t, 'table')
local i = 0
for _ in pairs(t) do
i = i + 1
end
return i
end
local function defaultKeySort(item1, item2)
-- "number" < "string", so numbers will be sorted before strings.
local type1, type2 = type(item1), type(item2)
if type1 ~= type2 then
return type1 < type2
elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then
return tostring(item1) < tostring(item2)
else
return item1 < item2
end
end
------------------------------------------------------------------------------------
-- keysToList
--
-- Returns an array of the keys in a table, sorted using either a default
-- comparison function or a custom keySort function.
------------------------------------------------------------------------------------
function p.keysToList(t, keySort, checked)
if not checked then
checkType('keysToList', 1, t, 'table')
checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'})
end
local arr = {}
local index = 1
for k in pairs(t) do
arr[index] = k
index = index + 1
end
if keySort ~= false then
keySort = type(keySort) == 'function' and keySort or defaultKeySort
table.sort(arr, keySort)
end
return arr
end
------------------------------------------------------------------------------------
-- sortedPairs
--
-- Iterates through a table, with the keys sorted using the keysToList function.
-- If there are only numerical keys, sparseIpairs is probably more efficient.
------------------------------------------------------------------------------------
function p.sortedPairs(t, keySort)
checkType('sortedPairs', 1, t, 'table')
checkType('sortedPairs', 2, keySort, 'function', true)
local arr = p.keysToList(t, keySort, true)
local i = 0
return function ()
i = i + 1
local key = arr[i]
if key ~= nil then
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- isArray
--
-- Returns true if the given value is a table and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArray(v)
if type(v) ~= 'table' then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- isArrayLike
--
-- Returns true if the given value is iterable and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArrayLike(v)
if not pcall(pairs, v) then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- invert
--
-- Transposes the keys and values in an array. For example, {"a", "b", "c"} ->
-- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to
-- the index of the last duplicate) and NaN values are ignored.
------------------------------------------------------------------------------------
function p.invert(arr)
checkType("invert", 1, arr, "table")
local isNan = p.isNan
local map = {}
for i, v in ipairs(arr) do
if not isNan(v) then
map[v] = i
end
end
return map
end
------------------------------------------------------------------------------------
-- listToSet
--
-- Creates a set from the array part of the table. Indexing the set by any of the
-- values of the array returns true. For example, {"a", "b", "c"} ->
-- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them
-- never equal to any value (including other NaNs or even themselves).
------------------------------------------------------------------------------------
function p.listToSet(arr)
checkType("listToSet", 1, arr, "table")
local isNan = p.isNan
local set = {}
for _, v in ipairs(arr) do
if not isNan(v) then
set[v] = true
end
end
return set
end
------------------------------------------------------------------------------------
-- deepCopy
--
-- Recursive deep copy function. Preserves identities of subtables.
------------------------------------------------------------------------------------
local function _deepCopy(orig, includeMetatable, already_seen)
-- Stores copies of tables indexed by the original table.
already_seen = already_seen or {}
local copy = already_seen[orig]
if copy ~= nil then
return copy
end
if type(orig) == 'table' then
copy = {}
for orig_key, orig_value in pairs(orig) do
copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen)
end
already_seen[orig] = copy
if includeMetatable then
local mt = getmetatable(orig)
if mt ~= nil then
local mt_copy = _deepCopy(mt, includeMetatable, already_seen)
setmetatable(copy, mt_copy)
already_seen[mt] = mt_copy
end
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end
function p.deepCopy(orig, noMetatable, already_seen)
checkType("deepCopy", 3, already_seen, "table", true)
return _deepCopy(orig, not noMetatable, already_seen)
end
------------------------------------------------------------------------------------
-- sparseConcat
--
-- Concatenates all values in the table that are indexed by a number, in order.
-- sparseConcat{a, nil, c, d} => "acd"
-- sparseConcat{nil, b, c, d} => "bcd"
------------------------------------------------------------------------------------
function p.sparseConcat(t, sep, i, j)
local arr = {}
local arr_i = 0
for _, v in p.sparseIpairs(t) do
arr_i = arr_i + 1
arr[arr_i] = v
end
return table.concat(arr, sep, i, j)
end
------------------------------------------------------------------------------------
-- length
--
-- Finds the length of an array, or of a quasi-array with keys such as "data1",
-- "data2", etc., using an exponential search algorithm. It is similar to the
-- operator #, but may return a different value when there are gaps in the array
-- portion of the table. Intended to be used on data loaded with mw.loadData. For
-- other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of the number
-- of unnamed template parameters, so use this function for frame.args.
------------------------------------------------------------------------------------
function p.length(t, prefix)
-- requiring module inline so that [[Module:Exponential search]] which is
-- only needed by this one function doesn't get millions of transclusions
local expSearch = require("Module:Exponential search")
checkType('length', 1, t, 'table')
checkType('length', 2, prefix, 'string', true)
return expSearch(function (i)
local key
if prefix then
key = prefix .. tostring(i)
else
key = i
end
return t[key] ~= nil
end) or 0
end
------------------------------------------------------------------------------------
-- inArray
--
-- Returns true if valueToFind is a member of the array, and false otherwise.
------------------------------------------------------------------------------------
function p.inArray(arr, valueToFind)
checkType("inArray", 1, arr, "table")
-- if valueToFind is nil, error?
for _, v in ipairs(arr) do
if v == valueToFind then
return true
end
end
return false
end
return p
085e7094ac84eb0132ee65822cf3f69cd8ba3d81
Harpmann & Associates
0
126
435
378
2023-06-29T00:22:35Z
Vorlitix
3
wikitext
text/x-wiki
[[File:Harpmann office3.png|thumb|328x328px|The current Harpmann & Associates office in Wachalassa.]]
Harpmann & Associates LLP is an American law firm based in [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. It was established by Earl Harpmann in 1993, operating in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. Harpmann & Associates has had three offices, with the main office in being in the Wachalassa district of Orange Blossom Beach, Florida.
The first Harpmann & Associates office was located in the [[Lake Drive Plaza|Lake Drive Plaza strip mall]], but was subsequently bombed by an unknown perpetrator in 2009. The office was replaced with [[Charlotte's Neighborhood Market]] after being reconstructed. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off the US 71. All of their offices are located within Orange Blossom Beach, Florida. After said bombing, Earl Harpmann & Associates has been forced to downscale in terms of operations and employees.
== Bombing ==
On Tuesday October 30th, 2008, there was a bombing orchestrated by a singular masked individual on the main Harpmann & Associates office. At 6:10, 1 masked man drove into the Lake Drive Plaza strip mall in a all-black 2001 Chevrolet Express 1500 with illegally tinted windows. Shortly after, a homemade incendiary bomb went through one of the left windows on the building, setting the office ablaze. At around 6:18, a small unidentified IED went through the same window and immediately killed all civilians within the building. [[File:Harpmann bombing.png|thumb|281x281px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]]There were three deaths and five injuries caused by the bombing. Those who died within the bombing were employees of Harpmann & Associates and those who were injured were people inside of the [[Blossom Photography]] building. Not long after, the masked individual drove off. As of May 28, 2009, it is not yet known who said masked individual is.
[[Category:Map locations]]
[[Category:Lore]]
8c8946351ff77b326b62c83ae9b070d58aea95a4
436
435
2023-06-29T00:23:13Z
Vorlitix
3
wikitext
text/x-wiki
[[File:Harpmann office3.png|thumb|328x328px|The current Harpmann & Associates office in Wachalassa.]]
Harpmann & Associates LLP is an American law firm based in [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. It was established by Earl Harpmann in 1993, operating in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. Harpmann & Associates has had three offices, with the main office in being in the Wachalassa district of Orange Blossom Beach, Florida.
The first Harpmann & Associates office was located in the [[Lake Drive Plaza|Lake Drive Plaza strip mall]], but was subsequently bombed by an unknown perpetrator in 2009. The office was replaced with [[Charlotte's Neighborhood Market]] after being reconstructed. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off the US 71. All of their offices are located within Orange Blossom Beach, Florida. After said bombing, Earl Harpmann & Associates has been forced to downscale in terms of operations and employees.
== Bombing ==
On Tuesday October 30th, 2008, there was a bombing orchestrated by a singular masked individual on the main Harpmann & Associates office. At 6:10, 1 masked man drove into the Lake Drive Plaza strip mall in a all-black 2001 Chevrolet Express 1500 with illegally tinted windows. Shortly after, a homemade incendiary bomb went through one of the left windows on the building, setting the office ablaze. At around 6:18, a small unidentified IED went through the same window and immediately killed all civilians within the building. [[File:Harpmann bombing.png|thumb|281x281px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]] There were three deaths and five injuries caused by the bombing. Those who died within the bombing were employees of Harpmann & Associates and those who were injured were people inside of the [[Blossom Photography]] building. Not long after, the masked individual drove off. As of May 28, 2009, it is not yet known who said masked individual is.
[[Category:Map locations]]
[[Category:Lore]]
45cff96db7832fed3938a409d0b743cccf794846
437
436
2023-06-29T00:23:47Z
Vorlitix
3
wikitext
text/x-wiki
[[File:Harpmann office3.png|thumb|328x328px|The current Harpmann & Associates office in Wachalassa.]]
Harpmann & Associates LLP is an American law firm based in [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. It was established by Earl Harpmann in 1993, operating in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. Harpmann & Associates has had three offices, with the main office in being in the Wachalassa district of Orange Blossom Beach, Florida.
The first Harpmann & Associates office was located in the [[Lake Drive Plaza|Lake Drive Plaza strip mall]], but was subsequently bombed by an unknown perpetrator in 2009. The office was replaced with [[Charlotte's Neighborhood Market]] after being reconstructed. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off the US 71. All of their offices are located within Orange Blossom Beach, Florida. After said bombing, Earl Harpmann & Associates has been forced to downscale in terms of operations and employees.
== Bombing ==
[[File:Harpmann bombing.png|thumb|281x281px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]]
On Tuesday October 30th, 2008, there was a bombing orchestrated by a singular masked individual on the main Harpmann & Associates office. At 6:10, 1 masked man drove into the Lake Drive Plaza strip mall in a all-black 2001 Chevrolet Express 1500 with illegally tinted windows. Shortly after, a homemade incendiary bomb went through one of the left windows on the building, setting the office ablaze. At around 6:18, a small unidentified IED went through the same window and immediately killed all civilians within the building.
There were three deaths and five injuries caused by the bombing. Those who died within the bombing were employees of Harpmann & Associates and those who were injured were people inside of the [[Blossom Photography]] building. Not long after, the masked individual drove off. As of May 28, 2009, it is not yet known who said masked individual is.
[[Category:Map locations]]
[[Category:Lore]]
64da2b189092b2e035a22efee4aaad6e98e2bd65
438
437
2023-06-29T00:23:58Z
Vorlitix
3
wikitext
text/x-wiki
[[File:Harpmann office3.png|thumb|328x328px|The current Harpmann & Associates office in Wachalassa.]]
Harpmann & Associates LLP is an American law firm based in [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. It was established by Earl Harpmann in 1993, operating in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. Harpmann & Associates has had three offices, with the main office in being in the Wachalassa district of Orange Blossom Beach, Florida.
The first Harpmann & Associates office was located in the [[Lake Drive Plaza|Lake Drive Plaza strip mall]], but was subsequently bombed by an unknown perpetrator in 2009. The office was replaced with [[Charlotte's Neighborhood Market]] after being reconstructed. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off the US 71. All of their offices are located within Orange Blossom Beach, Florida. After said bombing, Earl Harpmann & Associates has been forced to downscale in terms of operations and employees.
== Bombing ==
[[File:Harpmann bombing.png|thumb|281x281px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]]
On Tuesday October 30th, 2008, there was a bombing orchestrated by a singular masked individual on the main Harpmann & Associates office. At 6:10, 1 masked man drove into the Lake Drive Plaza strip mall in a all-black 2001 Chevrolet Express 1500 with illegally tinted windows. Shortly after, a homemade incendiary bomb went through one of the left windows on the building, setting the office ablaze. At around 6:18, a small unidentified IED went through the same window and immediately killed all civilians within the building.
There were three deaths and five injuries caused by the bombing. Those who died within the bombing were employees of Harpmann & Associates and those who were injured were people inside of the [[Blossom Photography]] building. Not long after, the masked individual drove off. As of May 28, 2009, it is not yet known who said masked individual is.
[[Category:Map locations]]
[[Category:Lore]]
04581b71a1187233d487cb3dc8f41e40fb392f28
File:7 eleven.png
6
184
439
2023-06-29T00:50:45Z
Carsop
4
wikitext
text/x-wiki
yeah
e029e41f4e015e2ea604a0d81a05a05186f15b03
Aiden's Used Cars
0
139
441
387
2023-06-29T01:57:56Z
Carsop
4
redid article
wikitext
text/x-wiki
[[File:Aiden's used cars new.png|thumb|510x510px|Aiden's Used Cars as of April 5th 2009.]]
Aiden's Used Cars is a small used car dealership off of State Road 30 in [[Orange Blossom Beach]]. Aiden's Used Cars was opened in 2005 by Aiden Jones. It is believed the dealership does not perform well, but despite this the dealership remains open. The dealership is known for selling cheap cars that tend to have various issues or defects, ranging from technical or electric issues such as no A/C, to cosmetic body damage such as dents or scratches or in some extreme cases, rust damage. The dealership has an unusually high amount of cameras installed on the building. The dealership sells some basic auto parts as means of making extra income, but installations must be done by the buyer as the dealership does not offer auto part installation or auto repairs. From December 2nd 2008 - January 15th 2009 the dealership inside was closed for renovations, repairs to the building, installation of new equipment and cameras, with a shootout delaying the reopening of the dealership. Sales could still be made during the renovations if the buyer had called the dealership ahead of time.
== Shootout ==
The dealership fell victim of a shootout on December 19th 2008, but it is unknown if the location being the dealership was deliberate as a potential robbery gone wrong, or was simply a coincidence or mistaken identity.
[[Category:Map locations]]
12a9f9f8d6df5f18b01af972d06953547f8dd931
442
441
2023-06-29T01:59:31Z
Carsop
4
adjusted image size
wikitext
text/x-wiki
[[File:Aiden's used cars new.png|thumb|450x450px|Aiden's Used Cars as of April 5th 2009.]]
Aiden's Used Cars is a small used car dealership off of State Road 30 in [[Orange Blossom Beach]]. Aiden's Used Cars was opened in 2005 by Aiden Jones. It is believed the dealership does not perform well, but despite this the dealership remains open. The dealership is known for selling cheap cars that tend to have various issues or defects, ranging from technical or electric issues such as no A/C, to cosmetic body damage such as dents or scratches or in some extreme cases, rust damage. The dealership has an unusually high amount of cameras installed on the building. The dealership sells some basic auto parts as means of making extra income, but installations must be done by the buyer as the dealership does not offer auto part installation or auto repairs. From December 2nd 2008 - January 15th 2009 the dealership inside was closed for renovations, repairs to the building, installation of new equipment and cameras, with a shootout delaying the reopening of the dealership. Sales could still be made during the renovations if the buyer had called the dealership ahead of time.
== Shootout ==
The dealership fell victim of a shootout on December 19th 2008, but it is unknown if the location being the dealership was deliberate as a potential robbery gone wrong, or was simply a coincidence or mistaken identity.
[[Category:Map locations]]
6f10e24623c2f370764cf516a76d390d7466ec78
File:CrameworkLogoFullTransparentShadeless.png
6
186
443
2023-07-21T05:50:25Z
Hatmanthehat
2
wikitext
text/x-wiki
The logo for Cramework
eac78b910e4995731a61b8a34ed76e3553169440
Cramework
0
4
444
202
2023-07-21T05:51:43Z
Hatmanthehat
2
Added logo
wikitext
text/x-wiki
[[Category:Miscellaneous information]]
{{stub}}
[[File:CrameworkLogoFullTransparentShadeless.png|thumb|205x205px|Logo used since 2023]]
Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in [[Orange Blossom Beach (game)|Orange Blossom Beach]] is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so.
Cramework was officially added to the main game on July 31, 2022 as part of the 0.1.7.1 update for the game.
== Features ==
Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version.
== Confusions and Misunderstandings ==
'''Cramework is not a game engine!''' It is solely a framework used to aid the development of realism-esque games on Roblox. The actual game engine is Roblox’s own proprietary engine.
779aec8cf659fa2e37724400432ac7dc9ab50b33
445
444
2023-07-21T06:08:56Z
Hatmanthehat
2
more formal and less pretentious
wikitext
text/x-wiki
[[Category:Miscellaneous information]]
{{stub}}
[[File:CrameworkLogoFullTransparentShadeless.png|thumb|205x205px|Logo used since 2023]]
Cramework is a proprietary framework used in Orange Blossom Beach (and also planned to be used in Central Red). It was made to be reusable across multiple game projects, and is used to handle generic parts of the game such as custom chat, scoreboard, etc. All of the code in [[Orange Blossom Beach (game)|Orange Blossom Beach]] is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so.
Cramework was officially added to the main game on July 31, 2022 as part of the 0.1.7.1 update for the game.
== Features ==
Cramework is packaged with several convenient features and utilities to help with development. One example is a registry, which is a hierarchical tree node system that uses key/value pairs to globally store data across the game. They can be used to enable/disable specific features and store settings. This gives the benefit of making the framework very customizable to one's own liking.
== Confusions and Misunderstandings ==
'''Cramework is not a game engine.''' It is first and foremost a framework used to aid the development of realism-esque games on Roblox. The game engine in question is Roblox’s own proprietary engine.
c5bcfbad4e9f52e82ee208a70ab934feec2206ca
Kaleidoscopic Records
0
63
446
364
2023-08-03T00:41:47Z
Hatmanthehat
2
I made itg small
wikitext
text/x-wiki
{{stub}}
[[File:Kaleidoscopic records.png|thumb|373x373px|Kaleidoscopic Records]]
Kaleidoscopic Records is a record store owned by KaleidoscopicPrism in [[Orange Blossom Beach]] off of Lake Drive.
[[Category:Map locations]]
b88e5a0112441f7c735ce1100c8af8a5369e28c4
Orange Blossom Beach
0
33
447
377
2023-09-08T01:57:25Z
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a city in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. The city sits at a total population of around 33,105 as of the [https://en.wikipedia.org/wiki/2000_United_States_census 2000 U.S. census]. It sits a few miles out of [https://en.wikipedia.org/wiki/Panama_City,_Florida Panama City] and was established as an outpost by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. Orange Blossom Beach wasn't incorporated until 1962.
It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation.
Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. The city is quite notable due to it's delicious array of mouth-watering food spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern [[Harpmann & Associates|renowned attorney Earl Harpmann]], with his knowledge of the law making him one of the best Lawyers in the area. Orange Blossom Beach is also the origin of [[Si Cola Inc.|Si Cola Corporation]].
[[Category:Map locations]]
49611193c04b754cd71dbd60925e05811a1a382f
448
447
2023-09-08T02:43:53Z
Vorlitix
3
JOHN SIMULATOR
wikitext
text/x-wiki
[[Category:Lore]]
''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].''
Orange Blossom Beach is a city in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. The city sits at a total population of around 33,105 as of the [https://en.wikipedia.org/wiki/2000_United_States_census 2000 U.S. census]. It sits a few miles out of [https://en.wikipedia.org/wiki/Panama_City,_Florida Panama City] and was established as an outpost by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. Orange Blossom Beach was incorporated in 1962.
It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation.
Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. The city is quite notable due to it's delicious array of mouth-watering food spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern [[Harpmann & Associates|renowned attorney Earl Harpmann]], with his knowledge of the law making him one of the best Lawyers in the area. Orange Blossom Beach is also the origin of [[Si Cola Inc.|Si Cola Corporation]].
[[Category:Map locations]]
57f7f6323a305e2c0f7bdf2f0a33ff283476f2bf
The Men of Business
0
187
449
2023-09-27T03:30:31Z
Hatmanthehat
2
I'll work on this later
wikitext
text/x-wiki
{{Stub}}
The Men of Business is a Roblox group that hosts the game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. It was created on March 19th, 2022.
40778542887a3acac7f509cca037aa3b044af3fb
455
449
2023-09-30T20:58:03Z
Vorlitix
3
BIGGEST
wikitext
text/x-wiki
[[File:MENOFBUSINESS2023ICON.png|thumb|212x212px|The current icon for the Men of Business group, created on September 24th, 2023.]]
The Men Of Business, also previously known as The Three Men of Business, Orange Blossom Beach Community, and fully known as [] The Men of Business [], is the main group that maintains ownership of the game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. The group is owned by the placeholder account that goes by the name of OrangeBlossomBeach, however the creators of both the game and the group are listed the rank below Group Holder.
The group was created on December 3rd, 2021 and was later made public the following day on December 4th, 2021. The group specializes in announcements and promotional material such as shirts, t-shirts, and pants and has had several name changes in the past.
==History==
The group itself was created on December 3rd, 2021. Shortly after being created, the group uploaded a white t-shirt with the OBB Seal entitled [https://www.roblox.com/catalog/8169204428/OBB-City-Seal ''OBB City Seal'']. The following day, another shirt was uploaded entitled [https://www.roblox.com/catalog/8175121554/Tacoball-employee-grey ''Tacoball employee+ (grey)'']. This shirt would eventually be taken off-sale and replaced with [https://www.roblox.com/catalog/11657492439/Tacoball-Employee ''<nowiki>Tacoball Employee [+]</nowiki>''] on November 4, 2022.
Group ownership would eventually be changed to the OrangeBlossomBeach account. On September 16, 2022 at 10:49 PM, the main Orange Blossom Beach game was moved from Hattozo's profile to The Three Men of Business. This caused a variety of issues, such as issues with the games audio and tool gripping. Another major issue was with the in-game chat. Many of these issues were resolved in [[0.29.3]], specifically with audio issues in the developer console and the tool gripping with soda items. Due to Orange Blossom Beach being moved to The Three Men of Business, most if not all of the games assets would be uploaded to the group.
Later, on November 12, 2022, The Three Men of Business was renamed to Orange Blossom Beach Community after a vote on the server's discord. The poll to rename the group was done on September 30, 2022 and had the results of 12 to change the name and 1 against the name change. An additional reason to the name change was the addition of Carsop to the executive management of the group, defeating the purpose of the name "The Three Men of Business".
Orange Blossom Beach Community continues to host updates for the main game and announce them. The group itself also releases clothing, as mentioned before. Clothing for the Orange Blossom Beach police were introduced on September 21, 2022 and clothing for [[Craig World Cafe]] employees were created on March 30, 2023
On September 25th 2023, The group was renamed to [[The Men of Business|[] The Men of Business []]] after an internal decision to rename the group. This was done so the group could branch out into other Cramework-related games in the future, and as well as to end the constant naming of Orange Blossom Beach. This also brought management changes, reorganizing the functions of roles in the group.
[[Category:Miscellaneous information]]
b8748105b28626f6269f69ecea9c3df2cb6b043d
458
455
2023-09-30T21:01:40Z
Vorlitix
3
wikitext
text/x-wiki
[[File:MENOFBUSINESS2023ICON.png|thumb|212x212px|The current icon for the Men of Business group, created on September 24th, 2023.]]
The Men Of Business, also previously known as The Three Men of Business, Orange Blossom Beach Community, and fully known as [] The Men of Business [], is the main group that maintains ownership of the game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. The group is owned by the placeholder account that goes by the name of OrangeBlossomBeach, however the creators of both the game and the group are listed the rank below Group Holder.
The group was created on December 3rd, 2021 and was later made public the following day on December 4th, 2021. The group specializes in announcements and promotional material such as shirts, t-shirts, and pants and has had several name changes in the past.
==History==
The group itself was created on December 3rd, 2021. Shortly after being created, the group uploaded a white t-shirt with the OBB Seal entitled [https://www.roblox.com/catalog/8169204428/OBB-City-Seal ''OBB City Seal'']. The following day, another shirt was uploaded entitled [https://www.roblox.com/catalog/8175121554/Tacoball-employee-grey ''Tacoball employee+ (grey)'']. This shirt would eventually be taken off-sale and replaced with [https://www.roblox.com/catalog/11657492439/Tacoball-Employee ''<nowiki>Tacoball Employee [+]</nowiki>''] on November 4, 2022.
Group ownership would eventually be changed to the OrangeBlossomBeach account. On September 16, 2022 at 10:49 PM, the main Orange Blossom Beach game was moved from Hattozo's profile to The Three Men of Business. This caused a variety of issues, such as issues with the games audio and tool gripping. Another major issue was with the in-game chat. Many of these issues were resolved in [[0.29.3]], specifically with audio issues in the developer console and the tool gripping with soda items. Due to Orange Blossom Beach being moved to The Three Men of Business, most if not all of the games assets would be uploaded to the group.
Later, on November 12, 2022, The Three Men of Business was renamed to Orange Blossom Beach Community after a vote on the server's discord. The poll to rename the group was done on September 30, 2022 and had the results of 12 to change the name and 1 against the name change. An additional reason to the name change was the addition of Carsop to the executive management of the group, defeating the purpose of the name "The Three Men of Business".
Orange Blossom Beach Community continues to host updates for the main game and announce them. The group itself also releases clothing, as mentioned before. Clothing for the Orange Blossom Beach police were introduced on September 21, 2022 and clothing for [[Craig World Cafe]] employees were created on March 30, 2023
On September 25th 2023, The group was renamed to [https://www.roblox.com/groups/12451517/The-Men-of-Business <nowiki>[] The Men of Business []</nowiki>] after an internal decision to rename the group. This was done so the group could branch out into other Cramework-related games in the future, and as well as to end the constant naming of Orange Blossom Beach. This also brought management changes, reorganizing the functions of roles in the group.
[[Category:Miscellaneous information]]
551f119d37745148720b07083f8304efdb5f9ad2
Orange Blossom Beach Community
0
96
450
267
2023-09-27T03:39:01Z
Vorlitix
3
wikitext
text/x-wiki
''Not to be confused with the [https://obb.miraheze.org/wiki/Orange_Blossom_Beach_(game)#Community Community of Orange Blossom Beach]''
Orange Blossom Beach Community is the main group that maintains ownership of the eponymous game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. The group is owned by the placeholder account that too goes by the eponymous name of OrangeBlossomBeach, however the creators of both the game and the group are listed the rank below Group Holder. The group was created on December 3rd, 2021 and was later made public the following day on December 4th, 2021. The group specializes in announcements and promotional material such as shirts, t-shirts, and pants.
==History==
The group itself was created on December 3rd, 2021. Shortly after being created, the group uploaded a white t-shirt with the OBB Seal entitled [https://www.roblox.com/catalog/8169204428/OBB-City-Seal ''OBB City Seal'']. The following day, another shirt was uploaded entitled [https://www.roblox.com/catalog/8175121554/Tacoball-employee-grey ''Tacoball employee+ (grey)'']. This shirt would eventually be taken off-sale and replaced with [https://www.roblox.com/catalog/11657492439/Tacoball-Employee ''<nowiki>Tacoball Employee [+]</nowiki>''] on November 4, 2022.
Group ownership would eventually be changed to the OrangeBlossomBeach account. On September 16, 2022 at 10:49 PM, the main Orange Blossom Beach game was moved from Hattozo's profile to The Three Men of Business. This caused a variety of issues, such as issues with the games audio and tool gripping. Another major issue was with the in-game chat. Many of these issues were resolved in [[0.29.3]], specifically with audio issues in the developer console and the tool gripping with soda items. Due to Orange Blossom Beach being moved to The Three Men of Business, most if not all of the games assets would be uploaded to the group.
Later, on November 12, 2022, The Three Men of Business was renamed to Orange Blossom Beach Community after a vote on the server's discord. The poll to rename the group was done on September 30, 2022 and had the results of 12 to change the name and 1 against the name change. An additional reason to the name change was the addition of Carsop to the executive management of the group, defeating the purpose of the name "The Three Men of Business".
Orange Blossom Beach Community continues to host updates for the main game and announce them. The group itself also releases clothing, as mentioned before. Clothing for the Orange Blossom Beach police were introduced on September 21, 2022 and clothing for [[Craig World Cafe]] employees were created on March 30, 2023
[[Category:Miscellaneous information]]
ac0424cdafc53a1844a20a2462b574fd0450dc9d
452
450
2023-09-30T20:35:09Z
Carsop
4
added second renaming
wikitext
text/x-wiki
''Not to be confused with the [https://obb.miraheze.org/wiki/Orange_Blossom_Beach_(game)#Community Community of Orange Blossom Beach]''
Orange Blossom Beach Community is the main group that maintains ownership of the eponymous game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. The group is owned by the placeholder account that too goes by the eponymous name of OrangeBlossomBeach, however the creators of both the game and the group are listed the rank below Group Holder. The group was created on December 3rd, 2021 and was later made public the following day on December 4th, 2021. The group specializes in announcements and promotional material such as shirts, t-shirts, and pants.
==History==
The group itself was created on December 3rd, 2021. Shortly after being created, the group uploaded a white t-shirt with the OBB Seal entitled [https://www.roblox.com/catalog/8169204428/OBB-City-Seal ''OBB City Seal'']. The following day, another shirt was uploaded entitled [https://www.roblox.com/catalog/8175121554/Tacoball-employee-grey ''Tacoball employee+ (grey)'']. This shirt would eventually be taken off-sale and replaced with [https://www.roblox.com/catalog/11657492439/Tacoball-Employee ''<nowiki>Tacoball Employee [+]</nowiki>''] on November 4, 2022.
Group ownership would eventually be changed to the OrangeBlossomBeach account. On September 16, 2022 at 10:49 PM, the main Orange Blossom Beach game was moved from Hattozo's profile to The Three Men of Business. This caused a variety of issues, such as issues with the games audio and tool gripping. Another major issue was with the in-game chat. Many of these issues were resolved in [[0.29.3]], specifically with audio issues in the developer console and the tool gripping with soda items. Due to Orange Blossom Beach being moved to The Three Men of Business, most if not all of the games assets would be uploaded to the group.
Later, on November 12, 2022, The Three Men of Business was renamed to Orange Blossom Beach Community after a vote on the server's discord. The poll to rename the group was done on September 30, 2022 and had the results of 12 to change the name and 1 against the name change. An additional reason to the name change was the addition of Carsop to the executive management of the group, defeating the purpose of the name "The Three Men of Business".
Orange Blossom Beach Community continues to host updates for the main game and announce them. The group itself also releases clothing, as mentioned before. Clothing for the Orange Blossom Beach police were introduced on September 21, 2022 and clothing for [[Craig World Cafe]] employees were created on March 30, 2023
On September 25th 2023, The group was renamed to [[The Men of Business|[] The Men of Business []]].
[[Category:Miscellaneous information]]
77f2086ede3377a0827b3b506c6e6f6f483f54b3
456
452
2023-09-30T20:59:03Z
Vorlitix
3
Redirected page to [[Special:MyLanguage/The Men of Business]]
wikitext
text/x-wiki
#REDIRECT [[Special:MyLanguage/The Men of Business|</nowiki>The Men of Business]]
151d1bbaac4474d9ae41a20de25041b0d3aed9fe
User:Vorlitix
2
43
451
119
2023-09-30T20:29:46Z
Vorlitix
3
wikitext
text/x-wiki
hello
orange blossom beach is the last roblox project i will ever be working on unless otherwise
signed, yours truly, the whale
713ff3848ced660364395bc5a17812d1065f263f
User:Carsop
2
188
453
2023-09-30T20:36:33Z
Carsop
4
ya
wikitext
text/x-wiki
hi
c22b5f9178342609428d6f51b2c5af4c0bde6a42
File:MENOFBUSINESS2023ICON.png
6
189
454
2023-09-30T20:55:05Z
Vorlitix
3
wikitext
text/x-wiki
f
4a0a19218e082a343a1b17e5333409af9d98f0f5
The Three Men of Business
0
190
457
2023-09-30T20:59:52Z
Vorlitix
3
Redirected page to [[Special:MyLanguage/The Men of Business]]
wikitext
text/x-wiki
#REDIRECT [[Special:MyLanguage/The Men of Business|</nowiki>The Men of Business]]
151d1bbaac4474d9ae41a20de25041b0d3aed9fe
User:ThatGuy9049
2
191
459
2023-10-13T07:27:44Z
ThatGuy9049
16
yes
wikitext
text/x-wiki
it's a me thatguy from good boys yes yes
63d89934698a391c121f0c77cf811a719eb58d56
Alpha 0.0.7
0
59
460
227
2023-10-16T05:46:23Z
Hatmanthehat
2
typo
wikitext
text/x-wiki
OBB Alpha 0.0.7 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.7 added (and then removed) a brand new chat and adjusted the cmdr commands.
== Development and Changelog ==
There isn't much about development, but it took a while to decide whether to remove Kohls Admin or to keep it as a secondary admin panel.
=== Changelog: ===
* Added a custom chat
* More cmdr commands
* Kohls Admin temporarily removed
* '''Custom chat removed -'''
* '''Kohls Admin temporarily added back +'''
''For the previous version, see [[Alpha 0.0.6]]''
''For the next version, see [[Alpha 0.0.8]]''
[[Category:Versions]]
72248ae0376b60a23068a022ad3431aefd2799b5
Alpha 0.1.7.2
0
192
463
2023-11-05T04:43:17Z
Carsop
4
created page
wikitext
text/x-wiki
OBB Alpha 0.1.7.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released on July 31, 2022.
== Development and Changelog ==
Alpha 0.1.7.2
'''Changelog:'''
* Various bug fixes
* AK-47 sounds were restored after being accidentally overridden
* Health command was added
* [https://devforum.roblox.com/t/topbarplus-v291-construct-intuitive-topbar-icons-customise-them-with-themes-dropdowns-captions-labels-and-much-more/1017485 TopbarPlus] by ForeverHD was added to the credits
''For the previous version, see [[Alpha 0.1.6]]''
''For the previous subversion, see [[Alpha 0.1.7.1]]''
''For the next subversion, see [[Alpha 0.1.7.1|Alpha 0.1.7.3]]''
''For the next version, see [[Alpha 0.1.8]]''
[[Category:Versions]]
c4e33a1231eef52908948d963a7a34f11dafc4ec
464
463
2023-11-05T04:46:16Z
Carsop
4
wikitext
text/x-wiki
OBB Alpha 0.1.7.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released on July 31, 2022, the same day as Alpha 0.1.7 and Alpha 0.1.7.1.
== Development and Changelog ==
Alpha 0.1.7.2 was focused mainly on minor fixes with minimal additions.
'''Changelog:'''
* Various bug fixes
* AK-47 sounds were restored after being accidentally overridden
* Health command was added
* [https://devforum.roblox.com/t/topbarplus-v291-construct-intuitive-topbar-icons-customise-them-with-themes-dropdowns-captions-labels-and-much-more/1017485 TopbarPlus] by ForeverHD was added to the credits
''For the previous version, see [[Alpha 0.1.6]]''
''For the previous subversion, see [[Alpha 0.1.7.1]]''
''For the next subversion, see [[Alpha 0.1.7.1|Alpha 0.1.7.3]]''
''For the next version, see [[Alpha 0.1.8]]''
[[Category:Versions]]
51a712745bed6f0099d51f3df1711bca2724bf27
465
464
2023-11-05T04:47:23Z
Carsop
4
wikitext
text/x-wiki
OBB Alpha 0.1.7.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released on July 31, 2022, the same day as Alpha 0.1.7 and Alpha 0.1.7.1.
== Development and Changelog ==
Alpha 0.1.7.2 was mainly focused on bug fixes and had minimal additions.
'''Changelog:'''
* Various bug fixes
* AK-47 sounds were restored after being accidentally overridden
* Health command was added
* [https://devforum.roblox.com/t/topbarplus-v291-construct-intuitive-topbar-icons-customise-them-with-themes-dropdowns-captions-labels-and-much-more/1017485 TopbarPlus] by ForeverHD was added to the credits
''For the previous version, see [[Alpha 0.1.6]]''
''For the previous subversion, see [[Alpha 0.1.7.1]]''
''For the next subversion, see [[Alpha 0.1.7.1|Alpha 0.1.7.3]]''
''For the next version, see [[Alpha 0.1.8]]''
[[Category:Versions]]
04a7c63548323564de3449f4f8fd1e73e22ae42b
466
465
2023-11-05T05:22:33Z
Carsop
4
wikitext
text/x-wiki
OBB Alpha 0.1.7.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released on July 31, 2022, the same day as Alpha 0.1.7 and Alpha 0.1.7.1.
== Development and Changelog ==
Alpha 0.1.7.2 was mainly focused on bug fixes and had minimal additions.
'''Changelog:'''
* Various bug fixes
* AK-47 sounds were restored after being accidentally overridden
* Health command was added
* [https://devforum.roblox.com/t/topbarplus-v291-construct-intuitive-topbar-icons-customise-them-with-themes-dropdowns-captions-labels-and-much-more/1017485 TopbarPlus] by ForeverHD was added to the credits
''For the previous version, see [[Alpha 0.1.6]]''
''For the main version, see [[Alpha 0.1.7]]''
''For the previous subversion, see [[Alpha 0.1.7.1]]''
''For the next subversion, see [[Alpha 0.1.7.3]]''
''For the next version, see [[Alpha 0.1.8]]''
[[Category:Versions]]
d85bd571c082adb58907ed51b804abb9fc6ff6c1